-2
我知道我可以檢查用戶輸入以匹配某些字符等,但有什麼方法可以在用戶輸入時限制用戶輸入嗎?限制用戶輸入
例如爲:用戶按下了鍵盤上的關鍵,但這並不呼應,因爲只有的數字 - 是允許的。當用戶按下它會回顯並且程序繼續。
這可能沒有使用庫(我不允許使用)?
我知道我可以檢查用戶輸入以匹配某些字符等,但有什麼方法可以在用戶輸入時限制用戶輸入嗎?限制用戶輸入
例如爲:用戶按下了鍵盤上的關鍵,但這並不呼應,因爲只有的數字 - 是允許的。當用戶按下它會回顯並且程序繼續。
這可能沒有使用庫(我不允許使用)?
這爲我工作:
如果你想限制然後可以輸入的字符數量:首先創建一個繼承PlainDocument一個新的類,並添加一個限制器:
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
public class JTextFieldLimit extends PlainDocument { //Added limited textfield so you can only enter one char
private static final long serialVersionUID = 3452547874756361487L;
private int limit;
public JTextFieldLimit(int limit) {
super();
this.limit = limit;
}
public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException {
if (str == null)
return;
if ((getLength() + str.length()) <= limit) {
super.insertString(offset, str, attr);
}
}
}
現在你可以創建一個新的文本框,並添加限制器
JTextField field = new JTextField(1); //1 stands for a maximum of 1 character allowed to be entered in this text field
field.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
char c = e.getKeyChar();
//if that character is between 1 and 9 then continue, else make the systems beep sound
//so in your case, this should be 1 and 4
if (!((c >= '1') && (c <= '9') || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE))) {
getToolkit().beep();
e.consume();
}
}
});
希望這有助於;)
(這是一個文本框,但事件監聽器可以添加到很多東西,全局監聽器確實存在)
「插件」?你是在一個現有的應用程序框架的背景下編寫它,還是僅僅是Swing? –
我想我使用了錯誤的詞語(我不是英語:),我的意思是我無法從Java.util或其他任何東西(當然只是掃描儀)導入任何東西 – user3165926
首先,你應該解釋你正在討論,Web界面(哪個框架?),控制檯/命令行輸入或圖形用戶界面(哪些工具包,純AWT,Swing或SWT?)等等。 – Holger