Isaac Gutierrez

Isaac es un experto arquitecto en nuevas tecnologías y coordinador de grandes proyectos tecnológicos.

Ver todos los tutoriales del autor

Fecha de publicación del tutorial: 2003-07-15

Tutorial visitado 59.708 veces Descargar en PDF
 TUTORIAL DE SWING 

Aquí mostraremos como crear una interfaz grafica de usuario (GUIs) para aplicaciones y applets, usando componentes Swing. Los components Swing son parte de las JFCs JavaTM Foundation Classes, podemos encontrarlos en el paquete javax.swing de la plataforma Java.

Nos podemos encontrar con los siguientes componentes swing, según la siguiente jerarquía

En el nivel superior se encuentran los contenedores de alto nivel (JFrame,JDialog, JApplet).
En el nivel inferior se encuentran los componentes atómicos (JButton, JComboBox, JTextField, JTable, etc).

A excepción de los contenedores de alto nivel, todos los demás componentes Swing cuyo nombre empieza por "J" descienden de la clase JComponent. Por ejemplo JPanel, JScrollPane, JButton, y JTable.

Para aprender a utilizar los componentes Swing lo mejor es hacer una pequeña aplicación. He escogido el típico programa de conversor de temperaturas porque tiene los componentes más importantes y además he añadido el JSlider para introducir valores en el campo de texto JTextField, normalmente este componente se suele utilizar para evitar posibles errores al introducir valores en el componente JTextField y también hemos añadido la característica de poder combinar HTML con los componentes Swing.

A continuación explico los aspectos de código más significativos y que deben ser suficientes para entender todo el código.

Primero se declaran los componentes Swing que se va a utilizar:

JFrame converterFrame;
JPanel converterPanel;
JSlider slider;
JTextField tempCelsius;
JLabel celsiusLabel, fahrenheitLabel;
JButton convertTemp;

Luego se inicializan con los valores apropiados:

converterFrame = new JFrame(windowTitle);
tempCelsius = new JTextField(2);
celsiusLabel = new JLabel("Celsius", SwingConstants.LEFT);
slider = new JSlider(JSlider.HORIZONTAL,0,100,36);
convertTemp = new JButton("Convierte...");
fahrenheitLabel = new JLabel(" Grados Fahrenheit", SwingConstants.LEFT);

Y otra de las cosas más importantes son el tratamiento de eventos, para este caso necesitamos recoger los eventos del botón y los eventos del componente JSlider.

Lo primero que tenemos que hacer es añadir el evento listener para el botón:

convertTemp.addActionListener(this);
…………
public void actionPerformed(ActionEvent e) {
int tempFahr = (int)((Double.parseDouble(tempCelsius.getText()))
* 1.8 + 32);
.........
}

Para capturar los eventos del JSlider debemos de añadir el evento chage Listener:

slider.addChangeListener(new SliderListener());
……….
class SliderListener implements ChangeListener {
public void stateChanged(ChangeEvent e) {
…………..
}
}

En este ejemplo hemos utilizado HTML para la etiqueta fahrenheitLabel. Como se puede ver la temperatura (tempFahr) se muestra en diferentes colores dependiendo del valor de la temperatura:

// Ponemos color a los grados
if (tempFahr <= 32) { fahrenheitLabel.setText("" + tempFahr
+ ""&#176 Fahrenheit
"); } else if (tempFahr <= 80)
{ fahrenheitLabel.setText("" + tempFahr
+ ""&#176 Fahrenheit
");
} else { fahrenheitLabel.setText("" + tempFahr
+ ""&#176 Fahrenheit
");
}

Para añadir código HTML simplemente ponemos la etiqueta al principio de la cadena y después escribimos el resto de código HTML que sea válido. Para poner el símbolo de los grados nosotros hemos utilizado el código HTML "&#176.

La aplicación en funcionamiento quedaría así:

El código completo lo pedéis encontrar aquí.

Sobre el autor ...

 

A continuación puedes evaluarlo:

Regístrate para evaluarlo

Por favor, vota +1 o compártelo si te pareció interesante

Share |
Anímate y coméntanos lo que pienses sobre este TUTORIAL:

Fecha publicación: 2006-08-22-06:11:29

Autor:

[Emov] Interesante tutorial , me a gustado y aprendi cosas que no sabia.

Fecha publicación: 2006-04-06-04:51:58

Autor:

[Yeesica Juarez] Estuve intentado bajar este tutorial pero no se pudo, porfavor serias tan amable de mandarmelo, realmente lo necesito. GRACIAS

Fecha publicación: 2006-04-03-02:53:39

Autor:

[Fabio] Gracias!!!