добавить несколько текстов в JTextPane и не заменять каждый текст другим

Кажется, я не могу найти вопрос о добавлении нескольких текстов в JTextPane. Кроме того, добавление не работает в JTextPane.

konsol = new JTextPane();
konsol.setText("something" + "\n");

Это то, что я пробовал, но он заменяет только старый текст. Что делать?


person Bassusour    schedule 02.05.2017    source источник
comment
В документации есть ссылка в учебник. Я не совсем уверен, чего вы хотите достичь, но вы можете просто объединить строки...   -  person getjackx    schedule 02.05.2017


Ответы (1)


Я использовал аналогичный способ в прошлом, я могу поделиться им с вами:

class JTextPaneExample {

    public static void main(String[] args) {
        JTextPane tp = new JTextPane();
        tp.setSize(250, 250);
        appendToPane(tp, "Hello Java,\n\n", Color.BLACK);
        appendToPane(tp, "Hello Suing,\n\n\n\n", Color.BLUE);
        appendToPane(tp, "Hello......,\n", Color.RED);
        JFrame f = new JFrame();

        f.setSize(300, 300);
        f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        f.setLocationRelativeTo(null);
        f.add(tp);
        f.setVisible(true);
    }

    public static void appendToPane(JTextPane tp, String txt, Color clr) {
        StyleContext sc = StyleContext.getDefaultStyleContext();
        AttributeSet aset = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, clr);
        aset = sc.addAttribute(aset, StyleConstants.FontFamily, "Serif");
        aset = sc.addAttribute(aset, StyleConstants.Alignment, StyleConstants.ALIGN_JUSTIFIED);
        int len = tp.getDocument().getLength();
        tp.setCaretPosition(len);
        tp.setCharacterAttributes(aset, false);
        tp.replaceSelection(txt);
    }
}

Результат такой

JTextPane многострочный

person YCF_L    schedule 02.05.2017
comment
Вы также можете напрямую взаимодействовать с Document/StyledDocument, что может быть более эффективным. - person MadProgrammer; 03.05.2017
comment
новая информация, спасибо @MadProgrammer за это - person YCF_L; 03.05.2017