Java:如何更改文本区域中特定行或字符串行的颜色?

Posted

技术标签:

【中文标题】Java:如何更改文本区域中特定行或字符串行的颜色?【英文标题】:Java: How to I change the color of a specific line or row of string in a Text area? 【发布时间】:2011-06-06 22:36:48 【问题描述】:

我可以更改颜色的一种方法是通过 setForground()。但是,当有多行代码时,它会使所有内容变为绿色或黑色。是否有另一种方法或任何方法来解决这个问题?谢谢!

int key = evt.getKeyCode();
    if (key == KeyEvent.VK_ENTER)
    
       String tb1EnterdValue = tb1.getText().toString();
       if((tb1EnterdValue.equals("yes")) )
        
            TextArea1.setForeground(Color.green);
    else
        
              TextArea1.setForeground(Color.lightGray);
        
       this.TextArea1.append(">"+tb1EnterdValue+newline);
       this.tb1.setText("");

【问题讨论】:

【参考方案1】:

我会使用带有“属性”(不是 html)的 JTextPane 来更改文本颜色。 Text Component Features 上的 Swing 教程部分提供了一个可帮助您入门的工作示例。

我之前尝试过 JTextPanes,但他们不让我使用 append() 方法

append() 方法只是一种方便的方法,它允许您将文本添加到 Document 的末尾。您也可以为 JTextPane 实现自己的 append() 方法。只需查看 JTextArea 的源代码并从其 append() 方法中复制代码即可。

【讨论】:

谢谢,但是我究竟如何从 JTextArea 获取源代码? 源码自带JDK。它在一个名为 src.zip 的文件中。 你想在哪里使用它。【参考方案2】:

这是 Swing 吗?您使用的是 JTextAreas 吗?如果是这样,请具体说明您的问题,然后不要使用 JTextArea,因为如果您想在一个文本组件中使用多种格式,它不是理想的文本组件。而是考虑使用 JTextPane 或 JEditorPane。这些教程将向您展示如何使用它们以及何时使用它们。

【讨论】:

是的,它是一个秋千和 JTextArea。我之前尝试过 JTextPanes,但他们不允许我使用 append() 方法,我需要将每个“命令”放到一个新行上。 缺少追加不应妨碍您使用其他文本组件,因为您可以将文本添加到组件的文档中。 我该怎么做?因为我需要光标在每次输入文本后换行 - 无论如何。有没有类似append的方法?

以上是关于Java:如何更改文本区域中特定行或字符串行的颜色?的主要内容,如果未能解决你的问题,请参考以下文章

如何查找文本区域中的文本是不是换行为多行?

如何以角度突出显示文本区域中的文本?

如何使在文本区域中输入的文本对应于特定的单选按钮?

如何使用jQuery更改文本区域中的行数

颜色:在 ie 中的文本上透明(使用覆盖技术突出显示文本区域中的文本)?

不允许在 Flex 中编辑 textarea 中的特定区域