JTextArea 或 JTextPane 设置突出显示的文本颜色
JTextArea or JTextPane Set Highlighted Text Color
我正在尝试更改 TextArea 或 TextPane 或什至任何其他内容中突出显示的颜色。
请注意,我正在寻找更改以下颜色的颜色:
而不是文字。
我也查看了 JTextArea
的 setHighlighter()
函数,但似乎我需要输入一个匿名的 Highlighter
class完全不知道如何实现所有覆盖。
jta.setHighlighter(new Highlighter() {
@Override
public void removeHighlight(Object tag) {
// TODO Auto-generated method stub
}
@Override
public void removeAllHighlights() {
// TODO Auto-generated method stub
}
@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
}
@Override
public void install(JTextComponent c) {
// TODO Auto-generated method stub
}
@Override
public Highlight[] getHighlights() {
// TODO Auto-generated method stub
return null;
}
@Override
public void deinstall(JTextComponent c) {
// TODO Auto-generated method stub
}
@Override
public void changeHighlight(Object tag, int p0, int p1)
throws BadLocationException {
// TODO Auto-generated method stub
}
@Override
public Object addHighlight(int p0, int p1, HighlightPainter p)
throws BadLocationException {
// TODO Auto-generated method stub
return null;
}
});
如果您指的是 "normal" 突出显示颜色(当您将鼠标拖到文本上时),这可以通过
简单地实现
textArea.setSelectionColor(Color.LIGHT_GRAY);
(或您想要的任何颜色。)
如果您想以编程方式突出显示文本区域中的字符序列:
String searchedWord = "word";
int pos1 = textArea.getText().indexOf(searchedWord);
int pos2 = pos1 + searchedWord.length();
try {
textArea.getHighlighter().addHighlight(pos1, pos2,
new DefaultHighlighter.DefaultHighlightPainter(Color.LIGHT_GRAY));
} catch (BadLocationException e) {
e.printStackTrace();
}
(同样适用于 JTextPane
)
我正在尝试更改 TextArea 或 TextPane 或什至任何其他内容中突出显示的颜色。
请注意,我正在寻找更改以下颜色的颜色:
而不是文字。
我也查看了 JTextArea
的 setHighlighter()
函数,但似乎我需要输入一个匿名的 Highlighter
class完全不知道如何实现所有覆盖。
jta.setHighlighter(new Highlighter() {
@Override
public void removeHighlight(Object tag) {
// TODO Auto-generated method stub
}
@Override
public void removeAllHighlights() {
// TODO Auto-generated method stub
}
@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
}
@Override
public void install(JTextComponent c) {
// TODO Auto-generated method stub
}
@Override
public Highlight[] getHighlights() {
// TODO Auto-generated method stub
return null;
}
@Override
public void deinstall(JTextComponent c) {
// TODO Auto-generated method stub
}
@Override
public void changeHighlight(Object tag, int p0, int p1)
throws BadLocationException {
// TODO Auto-generated method stub
}
@Override
public Object addHighlight(int p0, int p1, HighlightPainter p)
throws BadLocationException {
// TODO Auto-generated method stub
return null;
}
});
如果您指的是 "normal" 突出显示颜色(当您将鼠标拖到文本上时),这可以通过
简单地实现textArea.setSelectionColor(Color.LIGHT_GRAY);
(或您想要的任何颜色。)
如果您想以编程方式突出显示文本区域中的字符序列:
String searchedWord = "word";
int pos1 = textArea.getText().indexOf(searchedWord);
int pos2 = pos1 + searchedWord.length();
try {
textArea.getHighlighter().addHighlight(pos1, pos2,
new DefaultHighlighter.DefaultHighlightPainter(Color.LIGHT_GRAY));
} catch (BadLocationException e) {
e.printStackTrace();
}
(同样适用于 JTextPane
)