example event ejemplo buttons actionperformed java swing user-interface jframe actionlistener

java - event - jframe implements actionlistener



Swing: cambiar el contenido de un panel con UpdateUI (2)

Este no es un uso apropiado de updateUI() , que "Restablece la propiedad de UI a un valor desde el aspecto actual". Como el ejemplo en sí mismo puede no ser confiable, considere estudiar otro. GoogleOlympiad , por ejemplo, establece el icono de una etiqueta usando una imagen (en caché).

ImageIcon image = getImage(index); imageLabel.setIcon(image);

Estoy revisando una aplicación heredada que usa Swing y me cuesta entender cómo cambian las pantallas cuando un usuario hace clic en un botón. Una de las razones por las que no puedo resolver esto es porque esta es la primera vez que uso Swing. He leído un libro y tengo los conceptos básicos, pero todavía estoy luchando.

Básicamente, la pantalla que estoy viendo tiene un JSplitPane que tiene una serie de botones de acceso directo a la izquierda y un panel vacío a la derecha. Cuando hago clic en el botón, el panel lateral derecho se rellena con una pantalla diferente según el botón presionado.

Pasando por el código, estaba esperando que haya algo que llame a un método setVisible () dependiendo de qué botón se presione.

El método actionPerformed para cada uno de los botones de acceso directo se parece a esto:

void shortCutBtn_actionPerformed(ActionEvent e) { propertyChangeListeners.firePropertyChange("selectedShortCut", previousShortCutSel, currentShortCutSel); mainPanel.updateUI(); }

He revisado la mayor parte del código y he llegado a la conclusión de que el código anterior es el que está causando el cambio de cuadro, pero no entiendo cómo está sucediendo eso.

Cada pantalla se identifica por una constante numérica. En el ejemplo del código anterior, previousShortCutSel y previousShortCutSel se refieren a un valor numérico que representa la pantalla de pantallas individuales.

Intenté buscar documentación sobre cómo funciona updateUI () pero estoy perdido. ¿Cómo hace que lo anterior haga que el contenido del panel derecho de JSplitPanel se actualice con una nueva pantalla?


Según los comentarios de ziggy (me alegro de que me ayudó)

Eche un vistazo a los PropertyChangeListener s que aparecen agregados en el código. En particular, el método propertyChange(PropertyChangeEvent e) es donde estará presente el código que cambia el contenido.

+1 al trashgod buen ejemplo / consejo como siempre