Hi Leutz.
Ich wil beim verlassen eines Textfeldes ein JOptionPane aufrufen und dann wieder in das Textfeld springen. Dieses MUSS mit focusLost() geschehen.
Da ist normalerweise eine Abfrage drin aber ich habs jetzt mal auf ein minimales zusammengefasst und ein ausführbares Prog erstellt damit Ihr wisst was ich meine.
Wegen der JOptionPane wird die Methode focusLost aber immer 2 mal aufgerufen..
weiss wer nen rat
Ich wil beim verlassen eines Textfeldes ein JOptionPane aufrufen und dann wieder in das Textfeld springen. Dieses MUSS mit focusLost() geschehen.
Da ist normalerweise eine Abfrage drin aber ich habs jetzt mal auf ein minimales zusammengefasst und ein ausführbares Prog erstellt damit Ihr wisst was ich meine.
Wegen der JOptionPane wird die Methode focusLost aber immer 2 mal aufgerufen..
weiss wer nen rat
Code:
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class FocusLostTest extends JFrame{
JTextField tf, tf2;
public FocusLostTest() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(800, 600);
setLocationRelativeTo(null);
JPanel panel = new JPanel();
this.add(panel);
this.setLayout(null);
tf = new JTextField();
tf.setBounds(20, 20, 200, 20);
this.add(tf);
tf.addFocusListener(new FocusListener() {
public void focusGained(FocusEvent arg0) {
}
public void focusLost(FocusEvent arg0) {
// Hier kommt normalerweise eine abfrage.. hab ich mal raus!!
// heisst bei falscher eingabe soll Meldung erzeugt werden und Cursor im Textfeld bleiben
tf.requestFocus();
JOptionPane.showMessageDialog(null, "text", "Fehler", 2);
}
});
tf2 = new JTextField();
tf2.setBounds(20, 50, 200, 20);
this.add(tf2);
this.setVisible(true);
}
public static void main(String[] args) {
new FocusLostTest();
}
}