如何在Swing中输入整数?

时间:2015-11-20 15:47:02

标签: java swing integer jtextfield jformattedtextfield

我有代码

    NumberFormat format = NumberFormat.getIntegerInstance();
    format.setGroupingUsed(false);

    JFormattedTextField jtf = new JFormattedTextField(format);

    jtf.setValue(new Integer(0));
    jtf.setColumns(10);

但是当我在文本字段中输入字符时,它们会一直打印,直到我切换到另一个文本字段。我需要完全禁止字符输入,我的意思是当输入字符时我需要删除或者某种方式使字符甚至不显示为监听器处理,如果可能的话也不会出现在文本字段中。我的意思是只有必须出现数字的字符。

3 个答案:

答案 0 :(得分:0)

我找到了一个可能与该问题重复的解决方案 Restricting JTextField input to Integers

    NumberFormat format = NumberFormat.getIntegerInstance();
    format.setGroupingUsed(false);

    NumberFormatter numberFormatter = new NumberFormatter(format);
    numberFormatter.setValueClass(Long.class); 
    numberFormatter.setAllowsInvalid(false); //this is the key

    JFormattedTextField jFormattedTextField = new JFormattedTextField(numberFormatter);

答案 1 :(得分:0)

我已经有一段时间从事Swing,但我认为你可以 创建自己的Document并在JTextField上设置它。

然后在文档对象中,您可以控制在用户输入时接受和拒绝哪些字符。

以下是在文档上设置过滤器的示例:

Restricting JTextField input to Integers

答案 2 :(得分:0)

我会使用配置了JSpinnerJSpinnerNumberModel。这是专为整数输入设计的,并且还提供了向上/向下箭头按钮的优点,可以通过鼠标进行更改。