Portál AbcLinuxu, 20. července 2025 10:11


Dotaz: Java: Jak nastavit výchozí focus

22.10.2010 13:37 M.
Java: Jak nastavit výchozí focus
Přečteno: 401×
Odpovědět | Admin
Ahoj, mám dotaz: jak v Javě (Swing) nastavit výchozí focus?

Dejme tomu, že mám nějaký objekt JFrame s nějakými komponentami uvnitř (neznám je). Při prvním zobrazení okna se nastaví výchozí focus. Když okno přestanu zobrazovat (setVisible(false)) a znova ho zobrazím, focus je stejný, jako byl těsně před uzavřením okna. To ale nechci - chci znovu výchozí focus.

Jak na to? Zkoušel jsem to dle tutoriálu, ale nějak mi to nešlo (focus se nezměnil nebo to hlásilo NullPointerException, protože jsem to nepřímo volal na neexistující komponentě).

Upozorňuji, že neznám komponenty uvnitř okna - mám jen odkaz na okno JFrame.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

22.10.2010 13:37 M.
Rozbalit Rozbalit vše Re: Java: Jak nastavit výchozí focus
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ještě dodám, že nepoužívám žádné vlastní komponenty.
steky avatar 22.10.2010 14:45 steky | skóre: 4 | blog: Zápisníček | Praha
Rozbalit Rozbalit vše Re: Java: Jak nastavit výchozí focus
Odpovědět | | Sbalit | Link | Blokovat | Admin

Bohužel ti teď hned nedokážu odpovědět konkrétně. Záleží hodně na tom, kam ti to hází výchozí focus. Pak budeš potřebovat buď metody nebo další referenci na tuto komponentu. V případě, že chceš dávat focus první komponentě v panelu, stačí, když si vytáhneš nějakou kolekci vnitřních elementů a na prvním z nich zavoláš metodu dávající focus. Každopádně si nejsem jist, zda může každý prvek ve Swingu mít focus. Zkus se podívat do API dokumentace.

22.10.2010 18:05 ZAH | skóre: 43 | blog: ZAH
Rozbalit Rozbalit vše Re: Java: Jak nastavit výchozí focus
Odpovědět | | Sbalit | Link | Blokovat | Admin
Myslím, že hledáš toto.
getDefaultComponent

public Component getDefaultComponent(Container aContainer)

    Returns the default Component to focus. This Component will be the first to receive focus when traversing down into a new focus traversal cycle rooted at aContainer. The default implementation of this method returns the same Component as getFirstComponent.

    Specified by:
        getDefaultComponent in class FocusTraversalPolicy

    Parameters:
        aContainer - a focus cycle root of aComponent or a focus traversal policy provider whose default Component is to be returned
    Returns:
        the default Component in the traversal cycle of aContainer, or null if no suitable Component can be found
    Throws:
        IllegalArgumentException - if aContainer is null
    See Also:
        getFirstComponent(java.awt.Container)


27.10.2010 10:30 M.
Rozbalit Rozbalit vše Re: Java: Jak nastavit výchozí focus
To jsem zkoušel, nešlo.

Na čem to mám volat? Ty komponenty, které chci "focusovat" (textová políčka atp.), jsou uvnitř nějakého množství JPanelů (neznám jejich množství ani zanoření).

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.