2017-10-14 130 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