NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!

Diskuze: Získávání Focusu po změně panelu pomocí CardLayout

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Jak se ti líbí článek?
Před uložením hodnocení, popiš prosím autorovi, co je špatněZnaků 0 z 50-500
Jak se ti kurz líbí?
Tvé hodnocení kurzuZnaků 0 z 50-500
Aktivity
Avatar
Knory
Člen
Avatar
Knory:12.12.2016 23:15

Ahoj, začal jsem tvořit aplikaci, ve které mi figuruje více než jeden panel. Proto jsem se rozhodl pro přepínání mezi panely pomocí třídy CardLayout.

Přepínání mezi panely mi funguje bezproblémově. Problém je ale v tom, že když po zapnutí appky přepnu z prvního panelu na druhý panel, tak v druhém panelu nemám focus, tím pádem mě neposlouchá KeyListener. Focus jsem se již snažil získat pomocí metod requestFocus() a requestFocusIn­Window(), ale zatím bez úspěchu.

Uměl by mi prosím někdo poradit jak s focusem správně pracovat? Googlím to už asi dvě až tři hodiny, ale stále se jen zamotávám do složitějších a ne zcela souvisejících řešení. Přitom by to měla být celkem jednoduchá operace.

Odpovědět
12.12.2016 23:15
Moji neznalost nebo nepřesné vyjadřování prosím omluv, případně mě na ně upozorni. Stále se jen učím.
Avatar
Atrament
Člen
Avatar
Atrament:13.12.2016 0:38

Požádej o focus až v okamžiku kdy se daný panel objeví 'na scéně', pomocí componentListeneru takto:

panel.addComponentListener(new ComponentAdapter() {
            @Override
            public void componentShown(ComponentEvent e) {
                panel.requestFocusInWindow();
            }

});
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
13.12.2016 0:38
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.