Este ejemplo muestra cómo crear un ejemplo de GUI de Swing y explica por qué es un ejemplo de uso de Observer Design Pattern.
Código completo
import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JTextArea; public class SimpleSwingExample { public static void main(String[] args) { JFrame frame = new JFrame("Frame Title"); final JTextArea comp = new JTextArea(); JButton btn = new JButton("click"); frame.getContentPane().add(comp, BorderLayout.CENTER); frame.getContentPane().add(btn, BorderLayout.SOUTH); btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { comp.setText("Button has been clicked"); } }); int width = 300; int height = 300; frame.setSize(width, height); frame.setVisible(true); } } |
Explicación paso a paso
En primer lugar, necesitamos un contenedor como un marco, una ventana o un applet para mostrar componentes como paneles, botones, áreas de texto, etc.
JFrame frame = new JFrame("Frame Title"); |
Cree algunos componentes como paneles, botones, áreas de texto, etc.
final JTextArea comp = new JTextArea(); JButton btn = new JButton("click"); |
Agregue componentes al área de visualización y organice su diseño utilizando los LayoutManagers.
frame.getContentPane().add(comp,BorderLayout.CENTER); frame.getContentPane().add(btn, BorderLayout.SOUTH); |
Adjunte un oyente al componente de botón. La interacción con un componente provoca que se produzca un evento. Para asociar una acción de usuario con un componente, adjunte un escucha.
Aquí el método addActionListener es el método de observador de registro del sujeto. Para obtener un ejemplo completo del patrón de diseño de Observer, vaya al ejemplo de Observer.
btn.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ae){ comp.setText("Button has been clicked"); } }); |
ActionListener de interfaz pública extiende EventListener
La interfaz de escucha sirve para recibir eventos de acción. La clase (Main, en este caso) que está interesada en procesar un evento de acción implementa esta interfaz, y el objeto creado con esa clase se registra con un componente, utilizando el método addActionListener del componente. Cuando ocurre el evento de acción, se invoca el método actionPerformed de ese objeto.
Muestre el marco.
int width = 300; int height = 300; frame.setSize(width, height); frame.setVisible(true); |