自定义JEditorPane行为

时间:2017-09-15 12:19:41

标签: java swing jeditorpane

嗨其他程序员!

我有一个JEditorPane,其中用户应输入以分号分隔的一系列数字(具有可选不确定性的数量),例如:

3.0; 5.8; 70+-5; ...

然后将列表映射到包含已解析数量的ArrayList包装器。

我想为输入窗格实现特定的行为。例如,按&#39 ;;'或者' '应插入&#39 ;; ',在';'之间按退格/删除和' '应该删除它们并组合分开的数字。削减和粘贴也有特定的行为,依此类推。我希望它具有用户友好性和直观性。

我试过了DocumentFilter,但它似乎太简单了,它可能搞乱插入/选择。所以我考虑编写我自己的StyledEditorKit子类,但是需要加载Actions以及很多技术细节,我并不知道这些细节。

我该如何处理?如果不从头开始编写EditorKit,有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

首先,我不会使用JEditorPane。 JEdi​​torPane用于显示HTML。使用JTextArea或JTextPane会更容易,因为它只包含文本而不需要担心标记。

  

我尝试过DocumentFilter,但它看起来太简单了,它可能搞乱插入/选择。

DocumentFilter设计为由多个文档使用,因此对您正在使用的实际文本组件一无所知。如果要控制插入位置,则需要将文本组件作为参数传递给DocumentFilter类。

  

按';'或者' '应插入&#39 ;; ',

如果你不喜欢DocumentFilter,那么也许你可以使用Key Bindings并处理keyTyped事件

  

在';'之间按退格/删除和' '应该删除

DocumentFilter应该可以使用,或者您可以再次使用Key Bindings。注意退格键我相信你需要处理Ctrl + H.

  

Cuts and paste也有特定的行为

DocumentFilter赢得了更新文档的原因(即用户输入或用户粘贴。您可以尝试覆盖文本组件的剪切/复制/粘贴方法。

  

所以我考虑编写自己的StyledEditorKit子类,但是要实现一大堆动作

同意,我认为这太过分了。