JTextField是一个计算器显示,已初始化为零,并且以十进制数字形式显示前导0(如0123或00123)是一种不好的形式。NetBeansSwing JFrame中的数字按钮(0..9)使用append()[在下面]删除前导零,但用户可能更喜欢键盘而不是鼠标,并且还需要处理非数字字符。
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应该更复杂。甚至可能有免费的实用程序可以为您完成大多数繁琐的工作。