2014-01-07 147 views
-2

我知道我可以檢查用戶輸入以匹配某些字符等,但有什麼方法可以在用戶輸入時限制用戶輸入嗎?限制用戶輸入

例如爲:用戶按下了鍵盤上的關鍵,但這並不呼應,因爲只有的數字 - 是允許的。當用戶按下它會回顯並且程序繼續。

這可能沒有使用庫(我不允許使用)?

+2

「插件」?你是在一個現有的應用程序框架的背景下編寫它,還是僅僅是Swing? –

+0

我想我使用了錯誤的詞語(我不是英語:),我的意思是我無法從Java.util或其他任何東西(當然只是掃描儀)導入任何東西 – user3165926

+0

首先,你應該解釋你正在討論,Web界面(哪個框架?),控制檯/命令行輸入或圖形用戶界面(哪些工具包,純AWT,Swing或SWT?)等等。 – Holger

回答

0

這爲我工作:

如果你想限制然後可以輸入的字符數量:首先創建一個繼承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(); 
     } 
    } 
}); 

希望這有助於;)

(這是一個文本框,但事件監聽器可以添加到很多東西,全局監聽器確實存在)