下面是我試圖只接受小於65535的值的KeyAdapter。它看起來好像它在它實際應該在的位置後面有一個按鍵。例如,如果我輸入 「55」 後,將的System.out.println產生 「5」,做 「3298」 將產生 「329」 等JTextField只接受有效的無符號短褲? (使用KeyAdapter)
// Allows for unsigned short values only
KeyAdapter unsignedShortAdapter = new KeyAdapter() {
public void keyTyped(KeyEvent e) {
char c = e.getKeyChar();
int tempInt = 0;
JTextField temp = null;
if (!((Character.isDigit(c) || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE)))) {
getToolkit().beep();
e.consume();
}
try {
temp = (JTextField) e.getSource();
System.out.println(temp.getText());
tempInt = (Integer.parseInt(temp.getText().toString()));
} catch (NumberFormatException e1) {
} finally {
if (tempInt > (Short.MAX_VALUE * 2)) {
getToolkit().beep();
e.consume();
temp.setText(temp.getText().substring(0, temp.getText().length() - 1));
invalidate();
}
}
}
};
你有使用'KeyListener'?因爲有很多更好的解決方案,否則 – MadProgrammer 2012-08-11 22:05:59
不,我不知道。我想用我可以工作的任何東西,哈哈。我只是使用KeyListener來防止用戶輸入非數字字符。 – snotyak 2012-08-11 22:07:26
問題是,在文本字段被更新之前,您正在獲取按鍵,所以當您的文本字段包含「5」並且按下「5」時,當您捕獲擊鍵時,該字段僅包含「5」。 – MadProgrammer 2012-08-11 22:10:29