Created
April 24, 2012 13:35
-
-
Save alcidesfp/2479711 to your computer and use it in GitHub Desktop.
Ejemplo Swing Java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// -*- coding:utf-8; -*- | |
import java.awt.event.*; | |
import java.awt.BorderLayout; | |
import javax.swing.*; | |
/* Demuestra el uso de clases Swing en Java */ | |
public class SimpleFrame extends JFrame { | |
public JLabel label; | |
public JButton button; | |
public SimpleFrame(){ | |
super(); | |
System.out.println("Inicializando ..."); | |
// crea controles | |
label = new JLabel("Aplicación Swing en Java"); | |
button = new JButton("Click me!"); | |
// inicializa UI | |
setTitle("Hola Swing desde Java"); | |
add(label, BorderLayout.CENTER); | |
add(button, BorderLayout.SOUTH); | |
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); | |
pack(); | |
// asigna eventos | |
button.addActionListener(new ActionListener(){ | |
public void actionPerformed(ActionEvent evt){ | |
onClickBtn(); | |
} | |
}); | |
} | |
public void onClickBtn(){ | |
label.setText("Hizo click!"); | |
} | |
public static void main(String[] args){ | |
SimpleFrame frame = new SimpleFrame(); | |
frame.setVisible(true); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Desgraciadamente, no hay muchas opciones aquí. JButton.addActionListener toma un ActionListener como parámetro y párele de contar. El objetivo de usar una clase anónima es que esta tiene acceso automático a los miembros privados de la clase que la contiene (lo más parecido en java a un closure), lo que hace posible la llamada a onClickBtn().
La única otra opción es usar una clase privada en su lugar (que para efectos prácticos es casi lo mismo) o una clase separada al estilo Command Pattern que tome "this" como parámetro. No quiero dar a entender con esto que esta última opción sea mala. Al contrario, suele ser la mejor opción en varios contextos. Simplemente en este caso particular, resulta un tanto "overkill".