向JTextPane添加多个文本,而不是用另一个文本替换每个文本

时间:2017-05-02 13:22:43

标签: java swing jtextpane

我似乎无法找到一个问题,要求将多个文本添加到JTextPane。另外,追加并不适用于JTextPane。

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

这是我尝试过的,但它只取代旧文本。怎么办?

1 个答案:

答案 0 :(得分:3)

我过去使用过类似的方式,我可以和你分享:

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 multiple line