將JTextField輸入限制為整數我知道這個問題已經問過無數次了,但我還是找不到一個簡單的解決辦法。我有一個JTextField,它只接受正整數作為輸入。我需要一種方法來確保這里沒有其他的輸入。我已經有一個keyListener附加到這個控件。刪除此偵聽器要處理的其他代碼,我有以下內容: txtAnswer.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
/* Restrict input to only integers */
if (key < 96 && key > 105) e.setKeyChar('');
};
});如您所見,我正在嘗試使用鍵碼來檢查剛才按下的鍵是否在整數范圍內。這似乎很管用。但我想做的是,如果條目超出了這個范圍,就忽略它。密碼e.setKeyChar('')本來是用來處理這事的,但不起作用。代碼將編譯,但沒有可見的效果。有人能告訴我是否在正確的軌道上嗎?我能替換什么e.setKeyChar('')讓這件事成功嗎?還是我完全走錯了方向?謝謝。
3 回答
胡說叔叔
TA貢獻1804條經驗 獲得超8個贊
JFormattedTextField
public static void main(String[] args) {
NumberFormat format = NumberFormat.getInstance();
NumberFormatter formatter = new NumberFormatter(format);
formatter.setValueClass(Integer.class);
formatter.setMinimum(0);
formatter.setMaximum(Integer.MAX_VALUE);
formatter.setAllowsInvalid(false);
// If you want the value to be committed on each keystroke instead of focus lost
formatter.setCommitsOnValidEdit(true);
JFormattedTextField field = new JFormattedTextField(formatter);
JOptionPane.showMessageDialog(null, field);
// getValue() always returns something valid
System.out.println(field.getValue());}添加回答
舉報
0/150
提交
取消
