Supongamos que tenemos la siguiente aplicación Swing:detectar si componente Swing de Java se ha ocultado
final JFrame frame = new JFrame();
final JPanel outer = new JPanel();
frame.add(outer);
JComponent inner = new SomeSpecialComponent();
outer.add(inner);
Así que en este ejemplo simplemente tenemos un panel exterior en el marco y un componente especial en el panel. Este componente especial debe hacer algo cuando está oculto y se muestra. Pero el problema es que se llama a setVisible() en el panel exterior y no en el componente especial. Por lo tanto, no puedo anular el método setVisible en el componente especial y tampoco puedo usar un componente listener en él. Podría registrar el oyente en el componente principal, pero ¿qué ocurre si el panel exterior también está en otro panel y este panel exterior externo está oculto?
¿Existe una solución más fácil que la adición recursiva de detectores de componentes a todos los componentes principales para detectar un cambio de visibilidad en SomeSpecialComponent?
Este evento no se desencadena cuando el padre El componente está oculto, solo se activa cuando se llama al método setVisible() del componente especial en sí. Como dije, estoy buscando una solución que sea FÁCIL y que luego se adjunte recursivamente a los eventos componentListener de todos los componentes principales. – kayahr
Veo el problema ahora :-) viene una nueva respuesta ... – aioobe