Java 自定义窗格行为

Java 自定义窗格行为,java,swing,jeditorpane,Java,Swing,Jeditorpane,各位程序员好 我有一个JEditorPane,用户应该在其中输入一系列数字(具有可选不确定性的数量),以分号分隔,例如: 3.0; 5.8; 70+-5; ... 然后将该列表映射到包含已解析数量的ArrayList包装器 我想为输入窗格实现一个特定的行为。例如按“;”或“”应插入“;”,在“;”之间按backspace/delete键和“”应同时删除这两个字符,并合并分隔的数字。切割和粘贴也有特定的行为,等等。我希望它是用户友好和直观的 我试过了,但它似乎太简单了,可能会弄乱插入符号/选择。

各位程序员好

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

3.0; 5.8; 70+-5; ...
然后将该列表映射到包含已解析数量的ArrayList包装器

我想为输入窗格实现一个特定的行为。例如按“;”或“”应插入“;”,在“;”之间按backspace/delete键和“”应同时删除这两个字符,并合并分隔的数字。切割和粘贴也有特定的行为,等等。我希望它是用户友好和直观的

我试过了,但它似乎太简单了,可能会弄乱插入符号/选择。所以我想写我自己的子类,但是有很多东西需要实现,还有很多技术细节,我对此没有把握


我该怎么处理呢?有没有办法不用从头开始编写EditorIt就可以做到这一点?

首先,我不会使用JEditorPane。窗格用于显示HTML。使用JTextArea或JTextPane会容易得多,因为它只包含文本,不需要担心标签

我尝试了DocumentFilter,但它似乎太简单了,可能会弄乱插入符号/选择

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

按“;”或“”应插入“;”

如果您不喜欢DocumentFilter,那么可能可以使用键绑定并处理keyTyped事件

在“;”之间按backspace/delete键和“”都应该删除

DocumentFilter应该可以工作,或者您可以再次使用键绑定。注意:对于退格键,我认为您需要处理Ctrl+H

切割和粘贴也有特定的行为

DocumentFilter不会作为更新文档的原因(即用户键入或用户粘贴)。您可以尝试覆盖文本组件的剪切/复制/粘贴方法

所以我想写我自己的StyledEditorKit子类,但是有很多操作需要实现


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

我选择了JEditorPane,因为我想要某种“语法突出显示”,但我会稍后再做。也许我会使用。我会考虑是否可以专门使用DocumentFilter来完成这项工作。感谢您提到键绑定,我没有考虑它们。使用HTML是一件痛苦的事情。使用带有属性的JTextPane来突出显示文本更容易。简单示例: