18

在这个问题中,有没有办法只接受 JTextField 中的数值?其中一个答案表明 JFormattedTextField 有问题。

我还没有使用它,但是有人可以扩展(或不同意)这个类的问题吗?

4

3 回答 3

15

JFormattedTextField是邪恶的,因为可用性差。例如,如果一个文本字段应该只能接受一个整数值,JFormattedTextField将允许任何旧垃圾,然后在失去焦点时抱怨。更糟糕的是,当焦点丢失时,它有一系列可配置的行为(明确表明它们都不是正确的选择)。

它还具有“k3wl”格式化程序选择。它似乎与文档的交互也很差(它尝试安装 a DocumentFilter,但这不是Document界面的一部分)。

于 2009-08-24T02:55:40.110 回答
9

我承认 JFormattedTextField 不是最容易使用的类,是的,它确实存在问题,但像大多数组件一样,它在某些事情上做得很好,而在其他事情上做得不好。

它实际上允许您在使用 MaskFormatter 时在输入数据时编辑整数值。因此,对于简单的任务,它可能是有效的。

编辑数据是一项复杂的任务。有时您需要在输入数据时对其进行编辑(在检查整数值的情况下)。有时您需要在输入数据后对其进行编辑(在验证日期的情况下)。然后当然你需要决定如何处理无效数据。

在执行非平凡任务时,可能需要配置一定数量的参数。它们可能并不总是按照您希望的方式或您期望的方式工作,因此您确实需要进行试验以找出何时可以/应该使用此组件。

于 2009-08-24T04:47:29.940 回答
7

我目前正在为 JFormattetTextField 苦苦挣扎。我正在尝试NumberFormat.getPercentInstance()用于格式化我的百分比值。

最糟糕的是,.getValue()它不会返回与用户看到的相同的值。例如,如果我输入25,5%格式化的文本字段,则将其四舍五入为26%,但.getValue()返回0.255。那就是邪恶。

于 2010-02-04T09:13:11.040 回答