0

我有一个 jtext 字段

当用户输入一个数字时

123456789,10

它将在 jtextfield 中自动设置

123,456,789.10

那么如果用户点击一个按钮,它会

System.out.print(the_same_number);

这将导致

123456789.10

  • 这个怎么做?
  • 如何让 jtextfield 只接受输入数字和点 (.) 和逗号 (,)?

(在这种情况下我应该使用格式化字段吗?)

谢谢..

4

3 回答 3

2

您将需要使用 aDocumentFilter来过滤进入文本字段的输入。

查看MDP 的示例,其中包含您所问问题的示例

于 2012-11-09T21:33:21.643 回答
1

您可以DocumentFilter按照@MadProgrammer 的建议选择。但是,很难解决在文本字段中以及在打印到控制台时具有不同显示的要求(这将需要一些额外的手动解析/格式化)。

结合只接受数字的要求,我强烈建议JFormattedTextField结合NumberFormat.

  • JFormattedTextField只接受可以被 解析的输入NumberFormat(你可以输入无效的输入,但它永远不会被接受)
  • 实际值 ( JFormattedTextField#getValue) 将是 a Double(如果您选择正确的格式),因此您可以完美打印

请注意,该标准JFormattedTextField存在一些可用性问题。通过谷歌搜索,您可以找到不同的改进版本JFormattedTextField。例如,我发现唯一缺少的是输入无效时的视觉反馈(例如,将背景设为红色)

于 2012-11-10T12:51:06.327 回答
0

“如何让 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{
        }
    }
于 2012-11-09T16:00:00.227 回答