JTextArea如何实现改变指定文字的颜色和字体?

时间:2022-08-25 11:30:59
在做一个文本编辑器,在JTextArea完成替换和查找功能时想替换或查找到的文字标记出来,该怎样实现呢?

6 个解决方案

#1


JTextArea好像不支持吧。
JTextPane好像可以,不过我也没有用过。

#2


只能改变颜色
void  setSelectedTextColor(Color c)
void  setSelectionColor(Color c)
void select(int selectionStart, int selectionEnd)

#3


使用html显示控件吧...

#4


引用 2 楼 huntor 的回复:
只能改变颜色
void  setSelectedTextColor(Color c)
void  setSelectionColor(Color c)
void select(int selectionStart, int selectionEnd)


试了下,可以改变字体颜色,能改变一段连续长度的文字颜色,但要怎样只改变不连续的指定部分的文字改变呢?

#5


<html><front color='red'>XXX</front></html>

swing控件是支持html标签的

#6


JTextPane 可以

Document doc = msgarea.getDocument();
SimpleAttributeSet set = new SimpleAttributeSet();
StyleConstants.setForeground(set, color);
if (bold == true) {
StyleConstants.setBold(set, true);
}
StyleConstants.setFontSize(set, fontsize);

doc.insertString(doc.getLength(), msg+"\n", set);

#1


JTextArea好像不支持吧。
JTextPane好像可以,不过我也没有用过。

#2


只能改变颜色
void  setSelectedTextColor(Color c)
void  setSelectionColor(Color c)
void select(int selectionStart, int selectionEnd)

#3


使用html显示控件吧...

#4


引用 2 楼 huntor 的回复:
只能改变颜色
void  setSelectedTextColor(Color c)
void  setSelectionColor(Color c)
void select(int selectionStart, int selectionEnd)


试了下,可以改变字体颜色,能改变一段连续长度的文字颜色,但要怎样只改变不连续的指定部分的文字改变呢?

#5


<html><front color='red'>XXX</front></html>

swing控件是支持html标签的

#6


JTextPane 可以

Document doc = msgarea.getDocument();
SimpleAttributeSet set = new SimpleAttributeSet();
StyleConstants.setForeground(set, color);
if (bold == true) {
StyleConstants.setBold(set, true);
}
StyleConstants.setFontSize(set, fontsize);

doc.insertString(doc.getLength(), msg+"\n", set);