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

标签 java swing jtextpane

我似乎真的找不到要求将多个文本添加到 JTextPane 的问题。此外,append 不适用于 JTextPane。

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

这是我试过的方法,但它只是替换了旧文本。怎么办?

最佳答案

我以前用过类似的方法,我可以分享给你:

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

关于java - 向 JTextPane 添加多个文本,而不是用另一个文本替换每个文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43739045/

相关文章:

java - Android - AlarmManager 每 5 秒触发一次,而不是 3 分钟

java - 在 JSON 配置文件中注入(inject) Spring Boot 应用程序属性

java - 正确的模型- View - Controller 设计

java - 根据 JTree 的选择显示/隐藏 JPopupMenu 中的 JMenuItems

java - JTextPane + JScrollPane + 自动换行?

java - 在JTextPane中对齐和内联组件(或图标)

java - 微调器文本未换行(不在微调器本身中,而是在 View 中)

java - 存储大于 127 的整数的批处理重复项的内存有效方法

java - 为什么 repaint() 后方 block 不显示?

Java - 如何在 JTextPane 中设置 <table> 的最大宽度?