为什么JFormattedTextField是邪恶的?

kwu*_*hak 18 java swing jformattedtextfield

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

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

Tom*_*ine 15

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

它还具有"k3wl"格式器选择.它似乎与文档的交互性很差(它试图安装一个DocumentFilter,但这不是Document界面的一部分).


cam*_*ckr 9

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

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

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

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

  • JFormattedTextField的主要问题是它针对罕见的用例进行了优化,而不是常见的用例,而缺少常见任务的组件.AWT已经足够糟糕了,但Swing又是由那些对GUI编程技术发展水平毫无头绪的人设计的,并且两次犯同样的错误真的很糟糕!如果Java和Swing的设计者刚刚看过Delphi或NeXt的Interface Builder自1990年代初以来能够做到的以及他们是如何做到的,那么语言和Swing都会更容易使用! (3认同)

Jon*_*nas 7

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

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