Hallo!
Ich habe innerhalb eines JTabbedPane mehrere JPanels und darauf jeweils einen JButton und mehrere Textfelder (JTextField).
Beim Klick auf den Button wird auf die Textfelder des jeweiligen Panels eine Plausibilitätsprüfung durchgeführt.
Falls ein Textfeld einen ungültigen Wert enthält, wird der Focus auf das Feld gesetzt und der Inhalt markiert, damit er vom Anwender sofort komfortabel editiert werden kann, mit entsprechender Warnmeldung:
Das funktioniert auch ganz wunderbar, wenn ich den Button manuell auslöse!
Allerdings habe ich an einer anderen Stelle auch einen Automatismus, der mir den Prüf-Button über einen einfachen doClick() auslöst.
Wenn dann ein Wert im Textfeld inkorrekt ist, wird zwar die Warnmeldung ausgegeben, aber der Focus wird nicht aufs Textfeld gelegt geschweige denn der Inhalt markiert, sondern der Vorgang wird immer auf das erste Textfeld auf dem Panel ausgeführt, da kann ich mich auf den Kopf stellen.
Wenn ich den Button dann wieder manuell auslöse, ist alles wieder wie gewünscht!
Ich habe die Flags des Textfelds zur Probe mal ausgelesen, ob der Focus überhaupt darauf gesetzt werden kann:
Alle sind auf true...
Es ist mir ein Rätsel!
tueftli
Ich habe innerhalb eines JTabbedPane mehrere JPanels und darauf jeweils einen JButton und mehrere Textfelder (JTextField).
Beim Klick auf den Button wird auf die Textfelder des jeweiligen Panels eine Plausibilitätsprüfung durchgeführt.
Falls ein Textfeld einen ungültigen Wert enthält, wird der Focus auf das Feld gesetzt und der Inhalt markiert, damit er vom Anwender sofort komfortabel editiert werden kann, mit entsprechender Warnmeldung:
Java:
if(d2 <= d){
tfW2.requestFocusInWindow();
tfW2.selectAll();
JOptionPane.showMessageDialog(null, "Wert 1 muss kleiner als Wert 2 sein!", "Werte!", JOptionPane.WARNING_MESSAGE);
}
Das funktioniert auch ganz wunderbar, wenn ich den Button manuell auslöse!
Allerdings habe ich an einer anderen Stelle auch einen Automatismus, der mir den Prüf-Button über einen einfachen doClick() auslöst.
Wenn dann ein Wert im Textfeld inkorrekt ist, wird zwar die Warnmeldung ausgegeben, aber der Focus wird nicht aufs Textfeld gelegt geschweige denn der Inhalt markiert, sondern der Vorgang wird immer auf das erste Textfeld auf dem Panel ausgeführt, da kann ich mich auf den Kopf stellen.
Wenn ich den Button dann wieder manuell auslöse, ist alles wieder wie gewünscht!
Ich habe die Flags des Textfelds zur Probe mal ausgelesen, ob der Focus überhaupt darauf gesetzt werden kann:
Java:
System.out.println(tfW2.isDisplayable());
System.out.println(tfW2.isFocusable());
System.out.println(tfW2.isVisible());
System.out.println(tfW2.isEditable());
System.out.println(tfW2.isEnabled());
System.out.println(tfW2.isRequestFocusEnabled());
Alle sind auf true...
Es ist mir ein Rätsel!
tueftli
Zuletzt bearbeitet: