Documentos de Académico
Documentos de Profesional
Documentos de Cultura
• Modelo de eventos
• Diseño de aplicaciones
– Modelo MVC (Modelo-Vista-Control)
PopupMenu
Swing-JFC (Java Foundation Classes)
• Swing Components:
JButton, JRadioButton, JChechBox,
JLabel, JTextArea,
JTextField, JPasswordField,
JComboBox, JList, JTree, JTable
this.setSize(ancho/2, alto/2);
setLocation(ancho/4, alto/4);
setLayout(new BorderLayout());
this.getContentPane(componente, “South”);
• Las constantes se han definido como String.
• El componente tiende a ocupar todo el espacio disponible.
•Solución: situar un panel (JPanel) en cada zona que necesitemos
El lenguaje de programación Java 10
Etiquetas. JLabel
JLabel etiq2 = new JLabel( "Etiqueta2" );
etiq2.setText(“Soy una etiqueta”);
etiq2.setFont( new Font("Helvetica", Font.BOLD, 18 ));
ButtonGroup
• Botón de dos estados (exclusividad)
• JRadioButton y JCheckBox son
subclases
• JRadioButton:
– JRadioButton(String label, boolean state)
– JRadioButton(String label, Icon icon)
– Para una selección exclusiva se tienen que agrupar en ButtonGroup:
• add(AbstractButton b)
• ButtonModel getSelection();
– ButtonModel
• String getActionCommand()
El lenguaje de programación Java 14
JComboBox
• Métodos:
– void setEditable(boolean b)
– void addItem(Object item)
– void insertItemAt(Object item, int index)
– void removeItem(Object item)
– void removeItemAt(int index)
– void removeAllItems()
– Object getSelectedItem()
JOptionPane.showOptionDialog(null,
"Podemos estar en un estado inconsistente",
"¡¡¡OJO!!!",JOptionPane.DEFAULT_OPTION,
JOptionPane.WARNING_MESSAGE, null, opciones, opciones[0]);
JMenuBar JPopupMenu
1. Añadimos un menú
• Desde el diseñador
• El resultado es que en la
en la definición de VentanaContador
se añada:
this.setJMenuBar(jMenuBar1);
Propiedades del JFrame o JDialog
El lenguaje de programación Java 23
Modelo de delegación de eventos
• Los eventos se encapsulan en una jerarquía de clases donde la clase
raíz es java.util.EventObject
• Fuentes de eventos (Source):
– es un objeto que tiene la capacidad de detectar eventos y notificar a los receptores
de eventos que se han producido esos eventos
– mantiene una lista de objetos receptores y los tipos de eventos a los que
están suscritos. El programador crea esa lista utilizando llamadas a los
métodos add<TipoEvento>Listener() (tb remove).
– Generalmente un componente del interfaz gráfico
• Receptores de eventos (Listener):
– es una clase (o una subclase de una clase) que implementa un interfaz receptor
específico java.util.EventListener
– declara TODOS los métodos adecuados al tratamiento de los eventos de su clase
• Resultan de utilidad las clases internas
24
Modelo de delegación de eventos
• Emparejamiento entre clases de eventos y definiciones de interfaces.
Por ejemplo:
– class MouseEvent
– interfaz MouseListener
– En java.awt.Component existe el método addMouseListener
• Adaptadores (Adapter):
– evita tener que escribir todos los métodos del interfaz
– implementa todos los métodos del interfaz con métodos vacíos
– una clase receptor puede definirse como una clase que extiende una clase Adapter (en
lugar de una clase que implementa el interfaz) y sobreescribe los métodos que necesite
– Ejemplo:
public abstract class MouseAdapter implements
MouseListener 25
Interfaces
Listener Métodos
ActionListener actionPerformed(ActionEvent)
keyPressed(KeyEvent)
KeyListener
keyReleased(KeyEvent)
KeyAdapter
keyTyped(KeyEvent)
mouseClicked(MouseEvent)
mouseEntered(MouseEvent)
MouseListener
mouseExited(MouseEvent)
MouseAdapter
mousePressed(MouseEvent)
mouseReleased(MouseEvent)
windowOpened(WindowEvent)
windowClosing(WindowEvent)
windowClosed(WindowEvent)
WindowListener
windowActivated(WindowEvent)
WindowAdapter
windowDeactivated(WindowEvent)
windowIconified(WindowEvent)
windowDeiconified(WindowEvent)
ItemListener itemStateChanged(ItemEvent)
26
Modelo de delegación de eventos. Ejemplo
import java.awt.*;
class CierraVentanas implements WindowListener{
public void windowClosing(WindowEvent we){
Window w = (Window)we.getSource(); Vacios!!
w.dispose(); extends WindowAdapter
System.exit(0);
}
public void windowOpened (WindowEvent we){}
public void windowClosed (WindowEvent we){}
public void windowActivated (WindowEvent we){}
public void windowDeactivated (WindowEvent we){}
public void windowIconified (WindowEvent we){}
public void windowDeiconified (WindowEvent we){}
}
public class MiAplicacion extends JFrame{
...
public MiAplicacion(){
...
this.addWindowListener(new CierraVentanas());
...
}
} El lenguaje de programación Java 27
Ejemplo2: WindowAdapter
import java.awt.*;
1)
JButton jButtonDec;
2)
jButtonDec.addActionListener(new BDListener());
3)
//Clase interna en JFrameContador
class BDListener implements ActionListener{
public void actionPerformed(ActionEvent event){
miConta.decrementar();
imprimirValor();
}
El lenguaje de programación Java 29
}
Ejemplo: JFrameContador v.2
jButtonDec.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
miConta.decrementar();
imprimirValor();
}
});
void jButtonSumar_actionPerformed(ActionEvent e) {
//acciones asociadas al evento (programador)
conta.incrementar();
imprimirValor(); //rellena el JTextField
}
void jMenuItemSalir_actionPerformed(ActionEvent e) {
//El cuerpo lo rellena el programador
System.exit(0);
}
void jMenuItemAbrir_actionPerformed(ActionEvent e) {
if (JFileChooser.APPROVE_OPTION ==
explorador.showOpenDialog(this)){
File fichero = explorador.getSelectedFile();
recuperarDatos(fichero);
}
}
• También showSaveDialog
El lenguaje de programación Java 34
JFileChooser.showOpenDialog