Documentos de Académico
Documentos de Profesional
Documentos de Cultura
T8-Interfaces Graficas PDF
T8-Interfaces Graficas PDF
Índice
• Introducción
– Objetivos
Contrucción de interfaces – Jerarquia de clases: patrón de diseño COMPOSITE
gráficas en Java
• Componentes principales
– Contenedores AWT/Swing
– Componentes AWT/Swing
AWT y Swing – Gestores de diseño
• Gestión de eventos
– Clases Listener
– Clases Adapter
• Patrón de diseño MVC
Introducción Objetivos
Button *
CheckBox *
TextField * Frame
*
...
Componente
• Clases Button/JButton
– Se usa para construir Botones.
– Al pulsar un botón se generará un evento, que habrá que
tratar.
• Clases Label/JLabel
– Utilizado para mostrar información.
– Se usan junto a los cuadros de texto.
import javax.swing.*;
import java.awt.*; • Clases CheckBox/JCheckBox/JRadioButton
public class Botoiak extends JFrame
{
JButton jButton1 = new JButton();
– Casillas de verificación. Ofrecen funcionalidad para activar y
JButton jButton2 = new JButton(); desactivar opciones.
JButton jButton3 = new JButton();
import javax.swing.*;
import java.util.*; • Creación de Menús
public class AukeraZerrendak extends JFrame {
– En Swing
Vector <String> elementuak = new Vector<String>();
• El único contenedor que puede alojar una barra de menú
JPanel jPanel1 = new JPanel();
JComboBox jComboBox1;//new gero egingo da es JFrame .
• La clase JMenuBar crea la barra de menú donde se
public AukeraZerrendak(){
elementuak.addElement("Java"); insertarán las opciones de dicho menú.
elementuak.addElement("Pascal"); • La clase JMenu es la encargada de crear los menús. Estos
elementuak.addElement("Cobol");
elementuak.addElement("Perl"); menús tienen un nombre asociado y muestran una lista
jComboBox1 = new JComboBox(elementuak); desplegable con varios elementos.
jPanel1.add(jComboBox1, null);
this.getContentPane().add(jPanel1, null); • Los elementos de un menú pueden ser objetos JmenuItem u
elementuak.addElement("LISP"); // beste item bat gehitzean, JLIST-a aldatzen da!! objetos JMenu (para crear menús en cascada)
pack();
}
public static void main(String[] args){
AukeraZerrendak frame = new AukeraZerrendak();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
} 8. Contrucción de interfaces gráficos en Java 25 8. Contrucción de interfaces gráficos en Java 26
• Se usan para definir dónde colocar un componente • Si se quiere poner el componente en unas
dentro de un contenedor. coordenadas concretas, se debe de eliminar el gestor
edukiontzia.add(osagaia); de diseño.
• FlowLayout (Gestor predeterminado para Panel) osagaia.setLayout(null);
– Los componentes se van añadiendo a una línea. Al
completar la línea, se pasa a la siguiente.
• Sean this un contenedor y textField1 uno de sus
• BorderLayout (Gestor predeterminado para Frame y componentes:
Dialog ) setLayout(null);
– Los componentes se añaden en una de estas 5 zonas: textField1.setBounds(15,20,50,60);
norte, sur, este, oeste y centro.
• Se puede cambiar el gestor predeterminado: x y zabalera altuera
edukiontzia.setLayout(new BorderLayout());
• Ventajas de definir un GUI con gestor de diseño: • Sin gestor de diseño se definen las coordenadas de
– los componentes se redibujan automáticamente al ajustar el todos los componentes
tamaño de la ventana (ajustándose al tamaño disponible). – fácil de hacer con herramientas visuales.
jPanel1.setBounds(new Rectangle(3, 0, 333, 170));
jPanel1.setLayout(null);
jLabel1.setText("Gustatzen");
jLabel1.setBounds(new Rectangle(66, 18, 62, 16));
jPanel1.add(jLabel1,null);
jCheckBox1.setText("Bai");
jCheckBox1.setBounds(new Rectangle(142, 17, 48, 19));
jPanel1.add(jCheckBox1,null);
jCheckBox2.setText("Ez");
jCheckBox2.setBounds(new Rectangle(201, 17, 44, 21));
jRadioButton1.setText("A");
jRadioButton1.setBounds(new Rectangle(14, 10, 49, 23));
jRadioButton2.setText("B");
jRadioButton2.setBounds(new Rectangle(14, 40, 58, 23));
jRadioButton3.setText("C");
jRadioButton3.setBounds(new Rectangle(14, 70, 55, 23));
jButton1.setText("A1");
jButton1.setBounds(new Rectangle(139, 10, 80, 23));
8. Contrucción de interfaces gráficos en Java 35 8. Contrucción de interfaces gráficos en Java 36
//...
Gestores de Diseño: Layout Otros contenedores
1
public void cambiarTexto(){
Queremos saber cuándo el usuario button.setText(“ok! has pulsado el botón”);
pulsa el botón. Al pulsarlo, se }
generará un evento
2
Si queremos hacer algo cuando se pulse el botón:
1) deberemos de programar un método , para responder al evento que se genera.
Pero ¿cómo saber cuándo ha pulsado el botón el usuario?
2) tendremos que saber cuándo se genera el evento.
<<interface>>
ActionListener
el usuario me ha pulsado!
2
button.addActionListener(this)
Ok!, implemento el interfaz ActionListener. Ahora quiero recoger tus eventos.
aplicación
actionPerformed(ActionEvent ev)
botón
registrarse en el F
botón para “oír” Ev uen
sus eventos n er en t e
Li s te actionPerformed(evento)
to de
s
public class SimpleGUI extends JFrame implements ActionListener { Siendo un listener: Como fuente de eventos:
1) debo de implementar un interfaz 1) debo aceptar el registro de listerners
JButton button;
2) para oír los eventos del botón, me debo 2) debo admitir acciones de los usuarios
public void ekin(){ 3) al recibir una acción del usuario, debo
button = new JButton("sakatu hemen"); registrar en el botón como listener.
avisar del evento a mis listeners
button.addActionListener(this); 3) para responder a los eventos, debo ofrecer
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().add(button); un método .
setSize(300,300);
setVisible(true);
}
}
La fuente de eventos
evento enviará el evento
}
addItemListener(ItemListener observador)
8. Contrucción de interfaces gráficos en Java 51 8. Contrucción de interfaces gráficos en Java
Componentes gráficos y Listeners (observadores) Componentes gráficos y Listeners (observadores)
System.exit(0); } } );
• Para evitar esa situación (usar sólo un método de un Frente a implementar (usando WindowListener)
interfaz, pero tener que programarlos todos), Java void windowActivated(WindowEvent e);