2017-10-14 28 views
1

Ich habe ein Textfeld, und ich möchte die Eingabe des Textfelds validieren, während ich tippe. Genau wie das Google Register Formular. Ich habe versucht, Thread zu verwenden. Aber es sieht nach einem Durcheinander aus.Validiere JTextField während der Eingabe in

+0

Schauen Sie [hier] (https://stackoverflow.com/questions/23134329/jtextfields-real-time-formatting-of-user-input) und man könnte finde etwas Nützliches. –

+0

@VasilisG., Nein. Verwenden Sie keinen KeyListener. Verwenden Sie den DocumentListener oder ein JFormattedTextField. – camickr

Antwort

1

Ich habe ein Textfeld, und ich möchte die Eingabe des Textfelds validieren, während ich tippe. Genau wie das Google Register Formular. Ich habe versucht, Thread zu verwenden. Aber es sieht nach einem Durcheinander aus.

Sie müssen keinen Thread verwenden, um die Eingabe während der Eingabe zu überprüfen. Sie können das DocumentListener verwenden, das für diesen Zweck implementiert wird.

Es kann die Änderungen im Textfeld hören, während Sie das Textfeld eingeben, d. H. Zeichen eingeben/Zeichen entfernen.

+0

Danke. Ich finde den Document Listener sehr nützlich. Ich verstehe die Methode insertUpdate() und removeUpdate. Aber ich weiß nicht, wann ich die Methode "ChangedUpdate" verwenden soll. Kannst du mir ein Beispiel zeigen? – John

+0

@John verwenden Sie einfach das insertUpdate und removeUpdate. ChangedUpdate kann leer bleiben. Wenn meine Lösung Ihr Problem löst, können Sie meine Lösung akzeptieren. – user3437460

+0

Ja. Ich habe es aber verstanden. Das geänderte Update tritt nur auf, wenn Sie die Größe, Schriftart, ... von Eingaben ändern. Wie auch immer, danke nochmal. – John

0

Sie können KeyListener für dieses TextField verwenden.

Dies ist Beispiel:

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

Verwenden Sie keinen KeyListener. Swing hat neuere und bessere APIs, wie die Antwort auf die Verwendung eines 'DocumentListener' vorgeschlagen hat. – camickr

Verwandte Themen