java - 如何拦截进入 Java Swing JTextField 的键盘敲击?

标签 java swing netbeans jframe jtextfield

JTextField 是一个初始化为零的计算器显示,显示带前导 0 的十进制数字(如 0123 或 00123)是一种错误的形式。NetBeans Swing JFrame 中的数字按钮 (0..9) 使用 append() [ below] 删除前导零,但用户可能更喜欢键盘而不是鼠标,并且还需要处理非数字字符。

private void append(String s) {
    if (newEntry) {
        newEntry = false;
        calcDisplay.setText(s);
    } else if (0 != Float.parseFloat(calcDisplay.getText().toString())) {
        calcDisplay.setText(calcDisplay.getText().toString() + s);
    }
}

最佳答案

您可以通过添加自定义 KeyListener 来限制输入到 JTextField 的字符。下面是一个演示该想法的简单示例:

myTextField.addKeyListener(new KeyAdapter() {
  @Override
  public void keyTyped(KeyEvent e) {
    char c = e.getKeyChar();
    if (!Character.isDigit(c)) {
      e.consume(); // Stop the event from propagating.
    }
  }
});

当然,您需要考虑像 Delete 这样的特殊键和像 CTRL-C 这样的组合键,因此您的 KeyListener 应该更复杂。甚至可能有免费的实用程序可以为您完成大部分繁重的工作。

关于java - 如何拦截进入 Java Swing JTextField 的键盘敲击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3622402/

相关文章:

java - Netbeans 中的数据库和 Java

java - 无法运行 PHP、MySQL、Apache 和 NetBeans(均为 2016 年最新版本)

java - 我需要分隔一个整数,然后在java中将数字相加

java - spock测试中if条件里面可以写 `when`/`then`吗

java - Swing 是否具有 Excel 电子表格的导入/导出功能? ( java )

php - 使用 netbeans 和 PHPUnit 测试 php 函数(不是类)

php - 从搜索中排除文件夹,但仍考虑在 Netbeans 7 (php) 的导航中

显然存在 java.lang.NoSuchMethodError

java - 在静态方法中获取实际泛型类型的类对象

java - 将标签设置为在操作监听器中可见