Wie kann ich erreichen, dass die beim Umschalten eines Card-Layouts angezeigte Komponente den Fokus erhält?
Das ist ein Auszug aus dem Code:
Anm: Schon klar, dass ich entweder Versuch 1 ODER Versuch 2 verwenden muss, hab hier nur beides gelistet.
Der Fokus bleibt aber auf dem Button außerhalb, über den das Layout geändert wurde.
Ich habe eine Ahnung, woher es kommt. Swing aktualisiert die Oberfläche erst am Ende des Events, erst dann kann die Komponente den Fokus erhalten, da sie bis dahin noch nicht aktualisiert wurde (isVisible() wurde aktualisiert, aber nicht der tatsächliche Status).
Ich habe schon versucht, den Fokus beim componentShown() Event zu erhalten, das funktioniert aber auch nicht. Auch requestFocusInWindow() bringt nichts.
Was kann ich noch versuchen?
Das ist ein Auszug aus dem Code:
Anm: Schon klar, dass ich entweder Versuch 1 ODER Versuch 2 verwenden muss, hab hier nur beides gelistet.
Java:
public void handleASpecificButton(ActionEvent evt) {
Component c = displayCard(cardLayoutPanel, "thisisakey");
//Versuch 1, dem angezeigten Card den Fokus geben
if (c != null) {
c.requestFocus();
}
//Versuch 2, die Eingabekomponente (Tabelle) ist mir ja bekannt.
specificTableInDisplayedCard.requestFocus(); }
public static Component displayCard(Container container, String key) {
((CardLayout) container.getLayout()).show(container, key);
for (Component oneComponent : container.getComponents()) {
if (oneComponent.isVisible()) {
return oneComponent();
}
}
return null;
}
Der Fokus bleibt aber auf dem Button außerhalb, über den das Layout geändert wurde.
Ich habe eine Ahnung, woher es kommt. Swing aktualisiert die Oberfläche erst am Ende des Events, erst dann kann die Komponente den Fokus erhalten, da sie bis dahin noch nicht aktualisiert wurde (isVisible() wurde aktualisiert, aber nicht der tatsächliche Status).
Ich habe schon versucht, den Fokus beim componentShown() Event zu erhalten, das funktioniert aber auch nicht. Auch requestFocusInWindow() bringt nichts.
Was kann ich noch versuchen?