Supponiamo di avere la seguente applicazione swing:rilevare se componente Java Swing è stata nascosta
final JFrame frame = new JFrame();
final JPanel outer = new JPanel();
frame.add(outer);
JComponent inner = new SomeSpecialComponent();
outer.add(inner);
Quindi in questo esempio dobbiamo semplicemente un pannello esterno nel telaio e uno speciale componente nel pannello. Questo componente speciale deve fare qualcosa quando è nascosto e mostrato. Ma il problema è che setVisible() viene chiamato sul pannello esterno e non sul componente speciale. Quindi non posso sovrascrivere il metodo setVisible nel componente speciale e non posso nemmeno usare un listener di componenti su di esso. Potrei registrare il listener sul componente genitore, ma cosa succede se il pannello esterno si trova anche in un altro pannello e questo pannello esterno esterno è nascosto?
Esiste una soluzione più semplice rispetto all'aggiunta ricorsiva di listener di componenti a tutti i componenti principali per rilevare una modifica della visibilità in SomeSpecialComponent?
Questo evento non viene attivato quando il genitore il componente è nascosto, viene attivato solo quando viene chiamato il metodo setVisible() del componente speciale stesso. Come ho detto, sono alla ricerca di una soluzione EASIER che si collega in modo ricorsivo agli eventi componentListener di tutti i componenti principali. – kayahr
Ora vedo il problema :-) nuova risposta in arrivo ... – aioobe