问题标签 [jformattedtextfield]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
6781 浏览

java - 为什么 JFormattedTextField 是邪恶的?

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

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

0 投票
4 回答
5014 浏览

java - 焦点上的 JFormattedTextField 插入符号位置

我在我的程序中使用了一些 JFormattedTextFields。由于某种原因,当单击文本字段后文本字段获得焦点时,插入符号位置总是跳到左侧(位置 0)。我希望插入符号最终出现在用户单击的位置。因此,如果我在两位数之间单击,插入符号应该在这两位数之间结束。

所以我实现了一个 FocusListener 来获取点击位置并在那里设置插入符号的位置。

我已经尝试了很多方法来让他工作。我尝试使用 final 关键字,它有效,但仅适用于单个文本字段。

我在焦点侦听器中使用了 set/get 方法来分配当前对象,但不确定如何使这个“安全”(例如,它们是否需要同步?)。

也许我缺少一些东西?

0 投票
2 回答
1127 浏览

java - 如何获得与用户从 JFormattedTextField 看到的值相同的值?

我正在使用NumberFormatterand JFormattedTextField,但.getValue()不会返回与用户看到的相同的值。

我认为输入字符串是使用 NumberFormats 解析方法解析的,并且我从NumberFormat.getNumberInstance();实际的语言环境中获得了 Numberformat。所以我认为我不能轻易扩展它并编写自己的解析方法?

例如,如果用户键入1234.487 thegetValue()将返回: 1234.487但用户将被显示1,234.49

另一个例子,使用NumberFormat.getCurrencyInstance();. 用户类型1234.487getValue()将返回1234.487,但用户将被显示$1,234.49

相反,如果 Formatter 无法在不四舍五入的情况下格式化值,我希望生成 ParseException。如果用户类型相同4.35b6,默认情况下格式化程序将显示4.35并且值将是4.35,但我想要 ParseException,因为用户输入了无效值。

这是我尝试过的代码:

如何获得与用户看到的相同的价值?

0 投票
5 回答
13873 浏览

java - JFormattedTextField : 输入持续时间值

我想使用 aJFormattedTextField来允许用户将持续时间值输入到表单中。示例有效值为:

2h 30m
72h 15m
6h
0h

但是,我在这方面的成功有限。有人可以建议如何实现吗?如果这个结果也可以使用 a 来实现,我JTextField很好。

谢谢!


如果它值得,这是我目前的尝试:

这种排序工作除了:

  • 我无法获取hm显示为纯文本(我尝试转义) *
  • 小时数有最大值

*:见@nanda 的回答

0 投票
1 回答
2407 浏览

java - JFormattedTextField 使用正则表达式格式化程序?

在让 JFormattedTextField 与我的自定义格式一起工作感到非常沮丧之后,我想知道是否有 a FormatterorFormatterFactory使用正则表达式?

我的想法是,如果有,那么我可以将它包装在一个静态类中并像这样调用它:


有关更多背景信息,请参阅我之前的问题:
我想使用 JFormattedTextField 来允许用户将持续时间值输入到表单中。示例有效值是:2h 30m 72h 15m 6h 0h

0 投票
1 回答
230 浏览

java - 在 Java 中的 JFormatterTextfield 中设置数字的上限

我想为格式化程序文本字段中的数字设置上限。假设有一个字符串具有以下格式:

036 12' 23.67"

第一个数字必须小于 180,因此当用户尝试键入大于 180 的数字时,它必须被屏蔽。我使用 MaskFormatter 如上所述格式化字符串,但我无法为第一个数字设置上限。我怎样才能做到这一点。谢谢。

0 投票
3 回答
789 浏览

java - 什么是创建仅允许用户在 Java 中输入整数/双精度的文本字段(或此类)的简单方法?

我正在寻找一种方法来确保我的文本字段(JTextField、JFormattedTextField)在我调用 .getText() 时返回双精度或整数而不是字符串。最好的方法是什么(如果可能)?

谢谢!

坏熊猫:D

0 投票
1 回答
456 浏览

java - 适用于 Mac OS X 10.6 Update 2 (1.6.0_20) 的 JFormattedTextField 删除 Java 中的错误的解决方法

显然,Mac OS X 的最新 Java 更新中引入了一个错误,它导致 JFormattedTextFields 中的删除被执行两次。请参阅http://lists.apple.com/archives/java-dev/2010/May/msg00092.html

按下删除键时,会调用 DefaultEditorKit.deletePrevCharAction 两次。

有什么解决方法的建议吗?

我正在考虑用一个修补版本替换我的文本字段的删除操作,该版本以某种方式过滤掉这些重复的调用。

0 投票
1 回答
182 浏览

java - 订阅 JFormattedTextField 中的值更改的“好方法”是什么?

我想订阅 JFormattedTextField 上的值更改。

检查源代码,我唯一看到的是属性“值”是在一个新值上触发的。但是这个属性只在那里被引用,并且直接写出来,没有常量。如果我订阅此属性更改,它会起作用。

但是,我想知道:这是正确的方法吗?

0 投票
2 回答
856 浏览

java - 为什么我必须为此 JFormattedTextField 按两次 Enter 才能激活 JDialog 的默认按钮?

在下面的代码示例中,如果用户更改了 JFormattedTextField 的内容然后按 Enter,则该对话框应该就像按下 OK 按钮一样。但这需要按两次Enter 才能发生。

普通的 JTextField 总是像我期望的那样工作——更改文本然后按 Enter 会立即激活 OK 按钮。

这适用于 Mac OS X 10.6 和当前的 Mac Java 更新 1.6.0_20。

这是一种解决方法吗?这是 Mac 特有的问题吗?