嗨其他程序员!
我有一个JEditorPane,其中用户应输入以分号分隔的一系列数字(具有可选不确定性的数量),例如:
3.0; 5.8; 70+-5; ...
然后将列表映射到包含已解析数量的ArrayList包装器。
我想为输入窗格实现特定的行为。例如,按&#39 ;;'或者' '应插入&#39 ;; ',在';'之间按退格/删除和' '应该删除它们并组合分开的数字。削减和粘贴也有特定的行为,依此类推。我希望它具有用户友好性和直观性。
我试过了DocumentFilter,但它似乎太简单了,它可能搞乱插入/选择。所以我考虑编写我自己的StyledEditorKit子类,但是需要加载Actions以及很多技术细节,我并不知道这些细节。
我该如何处理?如果不从头开始编写EditorKit,有没有办法做到这一点?
答案 0 :(得分:1)
首先,我不会使用JEditorPane。 JEditorPane用于显示HTML。使用JTextArea或JTextPane会更容易,因为它只包含文本而不需要担心标记。
我尝试过DocumentFilter,但它看起来太简单了,它可能搞乱插入/选择。
DocumentFilter设计为由多个文档使用,因此对您正在使用的实际文本组件一无所知。如果要控制插入位置,则需要将文本组件作为参数传递给DocumentFilter类。
按';'或者' '应插入&#39 ;; ',
如果你不喜欢DocumentFilter,那么也许你可以使用Key Bindings并处理keyTyped事件
在';'之间按退格/删除和' '应该删除
DocumentFilter应该可以使用,或者您可以再次使用Key Bindings。注意退格键我相信你需要处理Ctrl + H.
Cuts and paste也有特定的行为
DocumentFilter赢得了更新文档的原因(即用户输入或用户粘贴。您可以尝试覆盖文本组件的剪切/复制/粘贴方法。
所以我考虑编写自己的StyledEditorKit子类,但是要实现一大堆动作
同意,我认为这太过分了。