我有一个与Integer变量绑定的文本字段,因此当用户在此字段中输入数字时,绑定机制会自动将文本转换为Integer并将此值设置为var。问题是,由于用户在文本字段中键入文本,该绑定机制仅转换值,如果用户在其中键入一些字母,则绑定不会激活,因为文本字段中没有合法值。在这种情况下我需要什么,绑定必须用null值触发更改,所以我的Integer var中有null。

因此,如果用户将此字段留空或者不是数字,则绑定将必须触发空值传播;不要忽视事件......如果没有在文本字段上预先编写事件,我怎么能这样做呢?

java绑定是否能够更改其默认行为?

有帮助吗?

解决方案

除了改变绑定机制的行为外,您还可以将Formatter放入仅接受数字的TextField中。您需要为此扩展javax.swing.text.DefaultFormatter。然后,您将使用JFormattedTextField而不是普通的JTextField。

结果是您只在文本字段中获得有效输入,而不必使用不正确的值。

其他提示

对受约束文本输入的Swing支持令人震惊。 JFormattedTextField 将为您提供极其悲惨的用户体验。与最有趣的Swing工作一样,忽略 JComponent 并转到模型。在本例中为 Document ,特别是 DocumentFilter

碰巧我有一个简单的Swing应用程序,它使用我之前准备的约束为整数的文本字段。 说明。 Source (特别参见 createNumberDocument )。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top