怎样做出的JTextArea有UltraEdit那样,有单行加亮的那种效果 要想有这个功能,应该用JList,而不是JTextArea。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 JTextArea的多行文本域被定义为具有一种字体和颜色的文本。估计要作到你要的效果比较困难。但是另外几个多行文本组件比如JEditorPane和JTextPane就不仅能够显示多行文本,还能显示不同的内容。甚至还可以在JTextPane里边放置图片。另外你还可以自己定制文本组建。建议:看机械工业出版社的java2 图形设计 卷II:Swing21章 文本基础第22章 文本组件23章自定义文本组件 同意楼上的,要实现这个效果建议用 JEditPane 会好点。 不好意思,自己没有做过。不过这两天刚好完成了一个文本编辑框,实现了编辑框内不同的内容有不同的颜色(包括前景色和后景色,甚至可以下划线和加粗等等),由此想到的一种解决方案:1。采用JTextPane(不是JEditorPane)实例,并得到他的document作为一个new DefaultStyledDocument实例。2。对JTextPane的实例添加光标移动处理事件3。获取当前光标所在的行,得到本行的文本的在整个文档中起始位置,和结束位置。4。new 一个simpleAttribute的实例attr,并通过Styleconstants.setBackground(attr,color.yellow)方法设置该属性集。(当然Styleconstants还有很多方法来设置属性的)。利用StyledDocument的setCharacterAttributes(int,int,attr,false)设置该行的属性。那么这一行就有一个背景色了。其实关键的办法就是利用StyledDocument(文档实例)提供的setCharacterAttributes方法,把一个属性集应用到这个文档的一定范围上。而JTextPane的默认document就是DefaultStyledDocumen,所以只要getDocument()就可以获得。另外属性集利用Styleconstants可以完成需要的设置。最后至于该属性应用在文档的什么范围,就靠光标的改变事件来获取。花脚大蚊子 看看下面的代码:能实现部分你说的功能,主要未完成问题是光标定位时(刚好选中一行还没有实现)我现在是光标移动到位置到文档结束,全部设置为新属性。当然这里还要仔细改动。但是我认为,基本结构就应该是这样子的。在jTextPane1_caretUpdate负责设置本次要设置的文档范围,就是从哪儿开始,哪儿结束,同时,另外一个重要的问题,就是把上次的那个清除掉。这些我都没有写。希望对你能有所帮助。JScrollPane jScrollPane1 = new JScrollPane();JTextPane jTextPane1 = new JTextPane();StyledDocument document = (StyledDocument)jTextPane1.getDocument();SimpleAttributeSet attributes = new SimpleAttributeSet();jScrollPane1.getViewport().add(jTextPane1,null);StyleConstants.setForeground(attributes,Color.yellow);jTextPane1.setText(";askdjf;askdfjaskdfffffffffffffffffffff");//jTextPane1.addCaretListener(new javax.swing.event.CaretListener() { public void caretUpdate(CaretEvent e) { jTextPane1_caretUpdate(e); } });void jTextPane1_caretUpdate(CaretEvent e) { int i = e.getDot() ; StyleConstants.setBackground(attributes,Color.yellow); document.setCharacterAttributes(i,document.getLength()-i,attributes,false);}我在jbuilder5 下执行的。 哪个大牛帮我看下这个运行错误该咋解决呢 为什么会是空引用??? 初学Java,请教中。。。 请大家指教一下:分别使用递归和栈遍历树,性能会差多少? java的类真多,类用法的在线邦助哪里可下载到?我曾看到别人有。 初学者的问题 哪位高手能帮我解决?给多少分都行!(急~~在线等待。。。) tomcat问题 在java中键盘的ESC键怎么表示? java Swing组件不能显示问题,在JTextArea读取java文件,添加读取的文件语句后不能显示组件,添加之前可以显示,新人求教啊 谢谢 Jb7的问题!!! 关于JAVA 的输入问题
估计要作到你要的效果比较困难。但是另外几个多行文本组件比如JEditorPane和JTextPane就不仅能够显示多行文本,还能显示不同的内容。甚至还可以在JTextPane里边放置图片。另外你还可以自己定制文本组建。
建议:看机械工业出版社的java2 图形设计 卷II:Swing21章 文本基础
第22章 文本组件
23章自定义文本组件
不过这两天刚好完成了一个文本编辑框,实现了编辑框内不同的内容有不同的颜色(包括前景色和后景色,甚至可以下划线和加粗等等),由此想到的一种解决方案:
1。采用JTextPane(不是JEditorPane)实例,并得到他的document作为一个new DefaultStyledDocument实例。
2。对JTextPane的实例添加光标移动处理事件
3。获取当前光标所在的行,得到本行的文本的在整个文档中起始位置,和结束位置。
4。new 一个simpleAttribute的实例attr,并通过Styleconstants.setBackground(attr,color.yellow)方法设置该属性集。(当然Styleconstants还有很多方法来设置属性的)。
利用StyledDocument的setCharacterAttributes(int,int,attr,false)设置该行的属性。那么这一行就有一个背景色了。其实关键的办法就是利用StyledDocument(文档实例)提供的setCharacterAttributes方法,把一个属性集应用到这个文档的一定范围上。而JTextPane的默认document就是DefaultStyledDocumen,所以只要getDocument()就可以获得。
另外属性集利用Styleconstants可以完成需要的设置。
最后至于该属性应用在文档的什么范围,就靠光标的改变事件来获取。
花脚大蚊子
我现在是光标移动到位置到文档结束,全部设置为新属性。当然这里还要仔细改动。但是我认为,基本结构就应该是这样子的。在jTextPane1_caretUpdate负责设置本次要设置的文档范围,就是从哪儿开始,哪儿结束,同时,另外一个重要的问题,就是把上次的那个清除掉。这些我都没有写。
希望对你能有所帮助。JScrollPane jScrollPane1 = new JScrollPane();
JTextPane jTextPane1 = new JTextPane();
StyledDocument document = (StyledDocument)jTextPane1.getDocument();
SimpleAttributeSet attributes = new SimpleAttributeSet();jScrollPane1.getViewport().add(jTextPane1,null);
StyleConstants.setForeground(attributes,Color.yellow);
jTextPane1.setText(";askdjf;askdfjaskdfffffffffffffffffffff");//jTextPane1.addCaretListener(new javax.swing.event.CaretListener() {
public void caretUpdate(CaretEvent e) {
jTextPane1_caretUpdate(e);
}
});void jTextPane1_caretUpdate(CaretEvent e) {
int i = e.getDot() ;
StyleConstants.setBackground(attributes,Color.yellow);
document.setCharacterAttributes(i,document.getLength()-i,attributes,false);
}我在jbuilder5 下执行的。