如何拦截去Java Swing JTextField的键盘笔划?

jac*_*nad 1 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

mae*_*ics 5

您可以通过添加自定义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.
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

当然,您需要考虑删除特殊键和CTRL-C之类的组合,因此您的KeyListener应该更复杂.甚至可以免费使用实用程序来为您完成大部分繁重的工作.