我有一个 jtext 字段
当用户输入一个数字时
123456789,10
它将在 jtextfield 中自动设置
123,456,789.10
那么如果用户点击一个按钮,它会
System.out.print(the_same_number);
这将导致
123456789.10
- 这个怎么做?
- 如何让 jtextfield 只接受输入数字和点 (.) 和逗号 (,)?
(在这种情况下我应该使用格式化字段吗?)
谢谢..
我有一个 jtext 字段
当用户输入一个数字时
123456789,10
它将在 jtextfield 中自动设置
123,456,789.10
那么如果用户点击一个按钮,它会
System.out.print(the_same_number);
这将导致
123456789.10
(在这种情况下我应该使用格式化字段吗?)
谢谢..
您将需要使用 aDocumentFilter
来过滤进入文本字段的输入。
查看MDP 的示例,其中包含您所问问题的示例
您可以DocumentFilter
按照@MadProgrammer 的建议选择。但是,很难解决在文本字段中以及在打印到控制台时具有不同显示的要求(这将需要一些额外的手动解析/格式化)。
结合只接受数字的要求,我强烈建议JFormattedTextField
结合NumberFormat
.
JFormattedTextField
只接受可以被 解析的输入NumberFormat
(你可以输入无效的输入,但它永远不会被接受)JFormattedTextField#getValue
) 将是 a Double
(如果您选择正确的格式),因此您可以完美打印请注意,该标准JFormattedTextField
存在一些可用性问题。通过谷歌搜索,您可以找到不同的改进版本JFormattedTextField
。例如,我发现唯一缺少的是输入无效时的视觉反馈(例如,将背景设为红色)
“如何让 jtextfield 只接受输入数字和点 (.) 和逗号 (,)?”
@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if ((e.KeyChar >= 48 && e.KeyChar <= 57) || e.KeyChar == 46 || e.KeyChar == 44){
}
else{
}
}