Java Swing: длина \t в JTextPane

164
15 декабря 2017, 03:00

Делаю редактор кода The C language на платформе Java Swing. Как изменить длину символа табуляции в JTextPane с 8 до 4 или 2.

Answer 1

Google по запросу "jtextpane tab width" предложил мне множество вариантов. Вот один из них:

public class TestTextPane extends JFrame {
    private static final int TAB_SIZE = 4;
    public TestTextPane() {
        JPanel panel = new JPanel();
        setContentPane(panel);
        JTextPane textPane = new JTextPane();
        textPane.setFont(new Font("monospaced", Font.PLAIN, 12));
        JScrollPane scrollPane = new JScrollPane(textPane);
        scrollPane.setPreferredSize(new Dimension(200, 200));
        panel.add(scrollPane);
        setTabs(textPane, TAB_SIZE);
    }
    public void setTabs(JTextPane textPane, int charactersPerTab) {
        FontMetrics fm = textPane.getFontMetrics(textPane.getFont());
        int charWidth = fm.charWidth('w');
        int tabWidth = charWidth * charactersPerTab;
        TabStop[] tabs = new TabStop[10];
        for (int j = 0; j < tabs.length; j++) {
            int tab = j + 1;
            tabs[j] = new TabStop(tab * tabWidth);
        }
        TabSet tabSet = new TabSet(tabs);
        SimpleAttributeSet attributes = new SimpleAttributeSet();
        StyleConstants.setTabSet(attributes, tabSet);
        int length = textPane.getDocument().getLength();
        textPane.getStyledDocument()
          .setParagraphAttributes(0, length, attributes, true);
    }
    public static void main(String[] args) {
        TestTextPane frame = new TestTextPane();
        frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }
}

Oracle Developer Community

READ ALSO
Утечка памяти ли это? Как исправить?

Утечка памяти ли это? Как исправить?

Пишу Android приложение с использованием таких библиотек:

136
Работа с файлами. Назначение FileWriter PrintWriter

Работа с файлами. Назначение FileWriter PrintWriter

Доброго времени сутокПодскажите где можно почитать про следующие записи, я просто внятной информации не нашел либо не совсем понял прочитанное

167
Как добавить ссылки в popupmenu

Как добавить ссылки в popupmenu

Иногда в одном TextView может быть несколько ссылокНо так как экран маловат, бывает не попадаешь на нужную

220