Java 高亮显示添加高亮显示不更改文本颜色
我有一个JTextArea,我使用从JTextArea获得的荧光笔的addHighlight方法高亮显示一些文本。它高亮显示文本,但不会将高亮显示文本的文本颜色更改为我设置的selectedTextColor 以下是一个例子:Java 高亮显示添加高亮显示不更改文本颜色,java,swing,jtextarea,highlighting,Java,Swing,Jtextarea,Highlighting,我有一个JTextArea,我使用从JTextArea获得的荧光笔的addHighlight方法高亮显示一些文本。它高亮显示文本,但不会将高亮显示文本的文本颜色更改为我设置的selectedTextColor 以下是一个例子: import java.awt.Color; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.Swin
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultHighlighter;
import javax.swing.text.Highlighter;
import javax.swing.text.Highlighter.HighlightPainter;
public class SSCCE {
private JFrame frame;
private JTextArea textArea;
public SSCCE() {
frame = new JFrame();
frame.setTitle("Huge Text");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
textArea = new JTextArea("abcd abcd abcd");
textArea.setBackground(Color.DARK_GRAY);
textArea.setForeground(Color.LIGHT_GRAY);
textArea.setSelectionColor(Color.LIGHT_GRAY);
textArea.setSelectedTextColor(Color.DARK_GRAY);
Highlighter highLighter = textArea.getHighlighter();
HighlightPainter highLightPainter = new DefaultHighlighter.DefaultHighlightPainter(textArea.getSelectionColor());
try {
highLighter.addHighlight(0, 10, highLightPainter);
} catch (BadLocationException e) {
e.printStackTrace();
}
frame.add(new JScrollPane(textArea));
frame.setSize(400, 350);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new SSCCE();
}
});
}
}
值得一读
- 如果要使用未设置样式的文本组件,请选择文本字段、密码字段、格式化文本字段或文本区域
- 如果要使用样式化文本组件,请参阅
JTextArea
不支持为整个内容的子集设置样式的功能。它应用样式,但覆盖整个内容
在这里找到一个示例代码事实上,JTextArea确实有高亮支持,正如演示的那样,@MadProgrammer我可以只在JTextArea中更改所选文本的颜色和字体吗?在第二个示例代码中,它刚刚高亮显示。如果OP只对
textArea.setForeground(Color.BLUE)进行一次更改,它就可以正常工作
以选择颜色区分。不,但OP没有这样做,他们使用的是荧光灯;)OP表示高亮显示的文本与所选文本颜色的前景颜色为浅灰色,OP只希望所选文本的前景颜色为深灰色。高亮显示和选择是不同的,高亮显示不影响文本颜色