小弟我的QQ对JTextPane组件的使用
最近,一直在忙QQ中写信息的编辑框和显示信息的文本框组件的问题,很是纠结。
写信息的编辑框和显示信息的文本框用的是同一种组件,只不过一个能够编辑,一个不能编辑的问题,这里就不多说了。
对写信息的编辑框和显示信息的文本框的要求:
1.显示文本信息;
2.能够自动换行;
3.能够显示表情和图片;
4.编辑的时候,图片和表情能够像文字一样按backspace键就被删掉;
开始的时候,用过JTextArea,但是,JTextArea是编辑文本的,后来,将JTextArea重写,用画的方法加载图片,
但是,要计算坐标,处理换行的问题,坐标计算没有多大问题,但是按backspace键,能够像文字被删掉吗?我下你想过,应该能够吧,给backspace键加个监听器,按键时清除该图片。没试过,这仅仅是些想法,而且我从来没有试过给键盘电脑某个按键加监听器,这个方法想想也蛮麻烦的,也困难!
但对于JTextPane,加载图片就方便实惠!它把图片是作为一个Icon对象放上去的,按backspace键
时,就能够像删除一个文字一样被删除掉。而且不用做上述那些复杂的处理。
JTextPane 写文字:
StyledDocument doc;
doc = t1.getStyledDocument();//获编辑模型
t1.setCaretPosition(doc.getLength());//设置 TextComponent 的文本插入符的位置。
try {
//doc.getLength()处插入字符串内容,属性为null
doc.insertString(doc.getLength(), msg, null);
} catch (BadLocationException e) {
e.printStackTrace();
}
t1.setCaretPosition(doc.getLength());//用来接到后面的位置
}
注:插入的代码后面有这么一行:<SPAN style="FONT-SIZE: x-small"> </SPAN> ,该行是多余的,编辑的时候是没有的,由于技术不精,消不 掉,请见谅!
JTextPane 组件设大小 :用setPreferredSize(new Dimension(int width,int heigth));
Dimension是尺寸对象
setSize 和setBounds不行,用了没有任何反应,不知道为什么。
并不是那么简单
应该要实现以下功能:
1,对输入的字符串进行样式替换
如输入/hanx 显示成
输入http://a.com/ 显示成链接样式 http://a.com/
2,退格后要还成字符串
对于/hanx对应的
3,支持粘贴,剪切操作