2017-10-14 128 views
1

打字我有一個文本框,我想驗證文本框的輸入,同時我打字的。就像谷歌的註冊表單。我試圖使用線程。但它看起來像一團糟。驗證了JTextField,而在

+0

看看[這裏](https://stackoverflow.com/questions/23134329/jtextfields-real-time-formatting-of-user-input),你可能會找到有用的東西。 –

+0

@VasilisG。,no。不要使用KeyListener。使用DocumentListener或JFormattedTextField。 – camickr

回答

1

我有一個文本框,我想在輸入時驗證文本框的輸入。就像google註冊表單一樣。我試圖使用線程。但它看起來像一團糟。

您不必在輸入時使用線程來檢查輸入。您可以使用爲此實現的DocumentListener

如您在文本字段中鍵入它可以收聽到的文本框的變化,即類型的字符/刪除字符。

+0

謝謝。我發現Document Listener非常有用。我瞭解insertUpdate()和removeUpdate方法。但是我實際上並不知道何時使用changedUpdate方法。你能告訴我一個例子嗎? – John

+0

@John只是使用insertUpdate和removeUpdate。 changedUpdate可以留空。如果我的解決方案解決了您的問題,您可以接受我的解決方案。 – user3437460

+0

是的。儘管我明白了。更改更新僅在更改輸入的大小,字體...時發生。無論如何,再次感謝你。 – John

0

您可以使用KeyListener的這個文本字段。

這是例子:

import java.awt.event.KeyEvent; 
import java.awt.event.KeyListener; 

import javax.swing.*; 

public class JtextField { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

      JFrame f= new JFrame("TextField Example"); 

      JTextField t1; 
      t1=new JTextField("Welcome, Give me a world"); 
      t1.setBounds(50,100, 200,30); 

      f.add(t1); 
      f.setSize(400,400); 
      f.setLayout(null); 
      f.setVisible(true); 

      t1.addKeyListener(new KeyListener() { 

       @Override 
       public void keyTyped(KeyEvent e) { 
        // TODO Auto-generated method stub 
        System.out.println("keyTyped"); 
       } 

       @Override 
       public void keyReleased(KeyEvent e) { 
        // TODO Auto-generated method stub 
        System.out.println("keyReleased"); 
       } 

       @Override 
       public void keyPressed(KeyEvent e) { 
        // TODO Auto-generated method stub 
        System.out.println("keyPressed"); 
       } 
      }); 
    } 

} 
+2

請勿使用KeyListener。 Swing使用「DocumentListener」的答案建議使用更新,更好的API。 – camickr