我正在制作一个小型Swing应用程序并且有一个JTextarea,我想要突出显示部分文本。
当我开始我的appl。我指示要突出显示的行由方法"突出显示()"
突出显示 public static void highlight() {
uihw.getTa().setSelectionStart(indexTxt[pencil]);//uihw is the ui instvar that has the jTextarea
uihw.getTa().setSelectionEnd(indexTxt[pencil]+lines[pencil].length());
}
如此处所示:
现在,当我点击按钮时,它应该选择下面的下一项并突出显示它。
public static void buttonClicked(String f){
if (pencil!=lines.length-1){
pencil++;
}
highlight();
}
这是突出显示停止工作的地方。 我可以直到最后查看列表(所以我确定选择已经完成)但文本不再突出显示。
关于为什么的任何想法?或者建议更好地实现我的突出显示功能?
答案 0 :(得分:3)
如果组件失去焦点,则可能无法看到选择。相反,您可以使用组件的突出显示器:
HighlightPainter highlightPainter = DefaultHighlighter.DefaultHighlightPainter(Color.BLUE);//
Highlighter highlighter = textArea.getHighlighter();
highlighter.addHighlight(start, end, highlightPainter);
如果您希望颜色与选择颜色相同,则可以使用
HighlightPainter highlightPainter = DefaultHighlighter.DefaultPainter;
或通过外观指定选择颜色
HighlightPainter highlightPainter = DefaultHighlighter.DefaultHighlightPainter(UIManager.getColor("TextArea.selectionBackground"));