/** @version 1.0 Abril-2017 @author Agustin J. Gonzalez Ilustra generación y manejo de evento a través de un botón simple. Se sugiere usar este modelo para sus aplicaciones: El main crea y hace visible la instancia de JFrame La instancia de JFrame crea la(s) instancia(s) de JPanel y las agrega La instancia de JPanel contiene los objetos gráficos de la aplicación. */ import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; public class Botones { /* El Método main tiene dos implementaciones, una de ellas está comentada. En Swing se recomienda usar la no comentada. Las componentes de Swing deben ser configuradas desde la hebra despachadora de eventos, ésta es la hebra que pasa los eventos tales como clicks del mouse, teclas, etc a las componentes de la interfaz usuario. Es posible utilizar la versión comentada para iniciar la interfaz usuario; sin embargo, las componetes de Swing aumentaron su complejidad y hoy esta implementación no garantiza una buena inicialización de estos. La probabilida de problemas es baja, pero no querrás ser de aquellos sin suerte que enfrentan problemas intermitentes. Es mejor usar este mecanismo aún cuando el código luzca extraño. */ public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { // implementación Swing recomendada public void run() { BotonesFrame frame = new BotonesFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } // run ends }); } /* // esta implementación no es recomendada cuando usamos Swing public static void main(String[] args) { BotonesFrame frame = new BotonesFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } */ } class BotonesFrame extends JFrame { public BotonesFrame(){ setTitle("Mi primer botón"); setSize(250, 150); BotonesPanel panel = new BotonesPanel(); Container contentPane = getContentPane(); contentPane.add(panel); } } class BotonesPanel extends JPanel { public BotonesPanel(){ JButton boton = new JButton("Botón Simple"); boton.addActionListener( new ActionListener (){ public void actionPerformed(ActionEvent event) { System.out.println("El botón ha sido presionado."); }; }); add(boton); } }