java - 如何在Swing中输入整数?

标签 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);

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

最佳答案

我在该问题的可能重复项中找到了解决方案 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);

关于java - 如何在Swing中输入整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33830717/

相关文章:

java - 如何在 Java Swing 应用程序中嵌入 QWebView (QtJambi)?

java - 下拉菜单在 selenium webdriver 中不起作用

java - 如何为上传的内容设置任意版本号?

java - 定位 JFrame

java - JTabbedPane 上所有选项卡的 JToolbar 控件

javascript - 似乎无法在 javascript 中添加两个整数?

java - 考虑在您的配置中定义类型为 'redis.clients.jedis.JedisPool' 的 bean。集成Redis Jedis时出错

java - 添加、删除、更新数据时如何刷新 JTable

java - 如何在不弄乱其打印字符串表示的情况下设置 Java 整数的第 32 位

C++ 分隔整数