我必须为 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 字段中检索。