自己开发的java中文处理编辑器
作者:未知 文章来源:www.jspcn.net
发布日期:2005年01月19日
近日,闲来无事,突然想做一个java版的中文输入法。前天晚上躺在床上整理了一下思路,觉得如果想做成想紫光一样,难度和工作量都比较大,但比较简单的汉字处理编辑器还是可以写一写的,就算是一个小“demo”吧。
在思考如何实现这个“demo”之前,有一个比较棘手的问题以前没有处理过。我最近一年一直都在写web的java程序,swing方面疏远了不少(虽然以前也不是很强,呵呵)。这个问题就是如何实现像紫光输入法一样,在文本编辑器中,弹出一个中文解析窗口。在学校的bbs上问了一下,知道可以用JWindow实现,但知道的时候,我已经用自己一个JFrame的子类实现了功能,也就懒得该了。
下面我们来浏览一下程序概要:
1、首先,我要在编辑器中的JTextArea限制输入,对a -- z 的字符进行解析,而不是让其
直接输入JTextArea中。所以,我创建了一个TextDocument,该类继承了javax.swing.text.PlainDocument,
并重载了insertString方法。部分代码如下:
/**插入字符串的触发事件,对于任何一个小写的字母,不让输入,以便输入法PopupFrame进行转换*/ public void insertString( int offset, String s, AttributeSet attributeSet ) throws BadLocationException { if(s.length() == 0){ return; } String endChar = s.substring(s.length()-1); //如果输入的是 a -- z 的字符,那么需要输入法转换而不是显示,否则可以直接进行显示 if( endChar.compareTo("a")>=0 && endChar.compareTo("z")<=0){ super.insertString( offset,s.substring(0,s.length()-1), attributeSet ); }else{ super.insertString( offset,s, attributeSet ); } }
2、其次,我创建了一个PopupDocument,该类继承了javax.swing.text.PlainDocument,
并重载了insertString方法。部分代码如下:
/**插入字符串的触发事件,对于任何