La API de Java tiene dos librerías para desarrollar aplicaciones con interfaz gráfica.
- AWT (Abstract Window Toolkit). Forma parte de la JFC (Java Foundation Classes). Los componentes se encuentran en la librería
java.AWT. - SWING. Componentes programados con código no nativo, lo cual los hace más portables. Son componentes más potentes, y se identifican con una J antes del nombre del componente. Los componentes se encuentran en la librería
javax.swingy son todo subclases de la claseJComponent.Swing. Forma parte de Java2.
Ejemplo básico de ventana Swing:
import javax.swing.*;
public class PruebaGUI{
public static void main(String [] args){
JFrame frame = new JFrame("Ventana Hola mundo");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JLabel label = new JLabel("Hola mundo");
frame.add(label);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
Contenedores de alto nivel
JFrame— Ventana principal.JDialog— Diálogo secundario.JApplet— Applet en navegador.
Componentes Swing más comunes
JButton, JLabel, JTextField, JTextArea, JCheckBox, JRadioButton, JComboBox, JScrollBar.
Layout Managers
- FlowLayout — Coloca los componentes de izquierda a derecha. Es el layout por defecto.
- BorderLayout — Divide el contenedor en cinco zonas: norte, sur, este, oeste y centro.
- CardLayout — Apila los componentes como cartas de una baraja.
- GridLayout — Distribuye los componentes en una cuadrícula.
- GridBagLayout — Similar a GridLayout pero con más flexibilidad.
- BoxLayout — Apila los componentes en una fila o columna.
Apariencia (Look and Feel)
Se controla con UIManager. Opciones disponibles:
- Multiplataforma:
MetalLookAndFeel - Windows
- Solaris (Motif)
- Mac
- GTK (Unix/Linux)
Se configura con UIManager.setLookAndFeel(...) dentro de un bloque try/catch.
Eventos (Listeners)
Los eventos permiten responder a las acciones del usuario. Se añaden con addActionListener(...).
Listeners disponibles: ActionListener, AdjustmentListener, FocusListener, ItemListener, KeyListener, MouseListener, MouseMotionListener, WindowListener.
Ejemplo con dos botones y un WindowAdapter para el cierre:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class EjemploEventos extends JFrame {
private JButton btnLimpia;
private JButton btnEscribe;
private JLabel lblMensaje;
public EjemploEventos() {
setTitle("Ejemplo Eventos");
setLayout(new FlowLayout());
btnLimpia = new JButton("Limpia");
btnEscribe = new JButton("Escribe");
lblMensaje = new JLabel("Aquí aparecerá el texto");
btnLimpia.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
lblMensaje.setText("");
}
});
btnEscribe.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
lblMensaje.setText("¡Hola!");
}
});
add(btnLimpia);
add(btnEscribe);
add(lblMensaje);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
pack();
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new EjemploEventos();
}
}
Exportar a .jar ejecutable
En Eclipse: File → Export → “Runnable jar file”.
Comentarios