Portál AbcLinuxu, 20. července 2025 10:11
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.
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.
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)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.