java - 如何为 jTextArea 中的选定文本设置字体颜色?

标签 java jtextarea

我必须为 jTextArea 中的选定文本设置定义的颜色(如红色)。这就像文本区域(jTextArea)中的突出显示过程。当我选择特定文本并单击任何按钮时,它应该以预定义颜色更改。

如果有任何解决方案,我可以将 jTextArea 更改为 jTextPane 或 JEditorPane。

最佳答案

带样式的文本(具有字符的颜色属性)可用作 StyledDocument,并可在 JTextPane 和 JEditorPane 中使用。所以使用 JTextPane。

private void buttonActionPerformed(java.awt.event.ActionEvent evt) {
    StyledDocument doc = textPane.getStyledDocument();
    int start = textPane.getSelectionStart();
    int end = textPane.getSelectionEnd();
    if (start == end) { // No selection, cursor position.
        return;
    }
    if (start > end) { // Backwards selection?
        int life = start;
        start = end;
        end = life;
    }
    Style style = textPane.addStyle("MyHilite", null);
    StyleConstants.setForeground(style, Color.GREEN.darker());
    //style = textPane.getStyle("MyHilite");
    doc.setCharacterAttributes(start, end - start, style, false);
}                                      

请注意:可以在创建 JTextPane 时设置样式,并且如注释代码所示,从 JTextPane 字段中检索。

关于java - 如何为 jTextArea 中的选定文本设置字体颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16790908/

相关文章:

java - 更新 Intellij 2019.1 后未指定模块

java - 帧率与重力无关

java - JTextArea不会更新java

java - 在java中突出显示文本

java文本区域和文件输入

java - "static"字段的延迟初始化应该是 "synchronized"- 如何修复它

java - 我应该转换成什么类型​​?

java - Azure 存储中的删除批量操作

java - KeyEvent 不适用于 JTextArea,但适用于包含 JTextArea 的 JFrame

java - 如何从不同的类在 jtextarea 上打印文本消息