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/