为什么JFormattedTextField是邪恶的?

时间:2009-08-24 01:39:39

标签: java swing jformattedtextfield

在这个问题Is there any way to accept only numeric values in a JTextField?中,其中一个答案表明JFormattedTextField存在问题。

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

3 个答案:

答案 0 :(得分:15)

由于可用性差,

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

它还具有“k3wl”格式器选择。它似乎与文档的交互性很差(它尝试安装DocumentFilter,但这不是Document接口的一部分。)

答案 1 :(得分:9)

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

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

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

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

答案 2 :(得分:7)

我目前正在努力与JFormattetTextField合作。我正在尝试使用NumberFormat.getPercentInstance()格式化我的百分比值。

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