Interfaces gráficas de usuario: Java Swing
Cuando se creo swing se hizo con el objetivo de evitar tener que usar los componentes gráficos nativos de cada sistema operativo, y crear una interfaz que fuera la misma en cualquier sistema operativo. Además el tener que usar los componentes nativos generaba problemas ya que no se sabe como se comporta la aplicación según el sistema operativo en el que fuese lanzado, al estar swing enteramente desarrollado en Java aumenta su portabilidad asegurando un comportamiento idéntico en diferentes plataformas.
Para crear una interfaz gráfica con swing se siguen los siguientes pasos:
1. Declarar los componentes que usaremos y crearlas.
2. Añadirlas al contenedor o al componente correspondiente.
3. Registrar los eventos que puedan ocurrir ( lo explicare en otro post ).
Primero hay que crearse una ventana pero la diferencia es que para poder añadir los componentes hace falta crearse un contenedor con la clase Container que almacene los componentes. Para crear un contenedor se pone:
Container contenedor=ventana.getContentPane();
En swing también existen los paneles de awt pero se llaman JPanel y tiene la misma funciones que los Panel .
JPanel panel=new JPanel();
En swing hay mas tipos de paneles como JScrollPane ( muestra barras de desplazamiento ), JRootPane , etc. Son paneles para mejorar un poco los componentes que se le añaden o para dar alguna función extra.
A continuación tenéis un ejemplo de interfaz gráfica con swing:
-
import java.awt.*;
-
import java.awt.event.*;
-
import javax.swing.*;
-
import javax.swing.event.*;
-
class MiListasFrames {
-
//declareamos
-
private Container contenedor;
-
//Ventana
-
private JFrame ventana;
-
//etiqueta
-
private JLabel etiqueta;
-
//campo texto
-
private JTextField texto;
-
//eleccion
-
private JComboBox marcas;
-
//lista
-
private JList lista;
-
String complementos[]={ “ABS”,“Aire-Acod”,“Air-Bag”,“Direc-Asis”,“EE”,“Pintura met.”,“Radio” };
-
boolean marcaEligida=false;
-
public MiListasFrames() {
-
//crear ventana
-
ventana=new JFrame();
-
ventana.setSize(330,194);
-
ventana.setTitle(“Concesionario”);
-
contenedor=ventana.getContentPane();
-
//crear etiqueta
-
etiqueta=new JLabel(“Selecciona marca y equipamiento”);
-
//crear campo texto
-
texto=new JTextField();
-
texto.setEnabled(false);
-
//crear eleccion
-
marcas=new JComboBox();
-
marcas.setFont(new Font(“Arial”,Font.PLAIN,10));
-
marcas.addItem(“Citroen”);
-
marcas.addItem(“Fiat”);
-
marcas.addItem(“Ford”);
-
marcas.addItem(“Opel”);
-
marcas.addItem(“Peugeot”);
-
marcas.addItem(“Renault”);
-
marcas.addItem(“Seat”);
-
//crear Lista
-
lista =new JList(complementos);
-
//añadimos a ventana
-
contenedor.add(“North”,etiqueta);
-
contenedor.add(“South”,texto);
-
contenedor.add(“West”,marcas);
-
contenedor.add(“East”,lista);
-
//registramos eventos
-
lista.addListSelectionListener(new ManejadorListSelectionListener());
-
marcas.addItemListener(new ManejadorItems());
-
//Registramos el evento de cerrar la ventana
-
ventana.addWindowListener(new CerrarVentana());
-
ventana.setVisible(true);
-
}
-
class ManejadorItems implements ItemListener {
-
public void itemStateChanged(ItemEvent i) {
-
texto.setText(“”);
-
lista.clearSelection();
-
marcaEligida=true;
-
}
-
}
-
class ManejadorListSelectionListener implements ListSelectionListener {
-
public void valueChanged(ListSelectionEvent l) {
-
String acum=“Marca:”+marcas.getSelectedItem()+“#”;
-
if(marcaEligida) {
-
Object seleccionados[]=lista.getSelectedValues();
-
for(int index=0;index<seleccionados.length;index++)
-
acum+=seleccionados[index]+“*”;
-
texto.setText(acum);
-
}
-
else
-
texto.setText(“Debe seleccionar una marca primero”);
-
}
-
}
-
public static void main(String args[]) {
-
new MiListasFrames();
-
}
-
}

muy interesante, gracias por tu ayuda. Nos motiva a seguir
programando en java.
De nada, la verdad es que esto de Java (al igual que cualquier lenguaje de programación) es un inmenso mundo por explorar. Y más si, utilizando Java, nos extendemos a programación web, etc.
para esto yo les recomiendo visual web developer es mucho mas facil y su entrono grafico es mejor ademas de que tambien la progrmacion es orientada a objetos y se pueden crear aplicaciones.net