01 - Practica Lenguaje Programacion Window Builder
01 - Practica Lenguaje Programacion Window Builder
01 - Practica Lenguaje Programacion Window Builder
Observe que hay dos tipos de vistas: Cdigo y Diseo. Si escoges Diseo se apreciar algo como esto:
Ventana del
programa
// Lanzar el programa
public static void main(String[] args) {
InvokeLater pone en la cola de
EventQueue.invokeLater(new Runnable() {
eventos de ejecucin un objeto con
public void run() {
interfaz Runnable
La clase
try {
EventQueue
Aplicacion window = new Aplicacion();
almacena los
window.frame.setVisible(true);
eventos que llegan
} catch (Exception e) {
aun contenedor
e.printStackTrace();
provenientes de
}
sus componentes
}
try y catch se utilizan para detectar y procesar
});
posibles errores que pueden ocurrir durante la
}
ejecucin del programa.
// Constructor
public Aplicacion() {
initialize();
}
4. Activa la Vista Cdigo y observa que en el mtodo Initialize de la Aplicacin se han agregado varias
lneas de cdigo. Usando lenguaje apropiado de Objetos deduce y explica las siguientes instrucciones:
..............................................
..................................................................................
..................................................................................
.........................................
menuBar.add(mnNewMenu);
.........................................
..................................................................................
..................................................................................
...................................
mnNewMenu.add(mntmAbrir);
...................................
.................................................................................
6. En todo programa se necesitan variables (objetos en el caso de la POO) que existan permanentemente
mientras dure la ejecucin del programa. Estos objetos se definen, normalmente, como propiedades en
la clase principal (la que tiene el mtodo main que es el punto de entrada al programa), as por
ejemplo para nuestro Visor adems del frame necesitaremos los siguientes objetos, por ello declralos
como propiedades de la clase Aplicacion:
private
private
private
private
JScrollPane scroll;
JLabel etiqueta;
JFileChooser dlgArchivo;
BufferedImage imagen;
//
//
//
//
8. A continuacin de las lneas anteriores modificar y/o agregar las siguientes instrucciones:
// fijar tamao del frame a 1/4 de la pantalla
frame.setBounds(0, 0,Toolkit.getDefaultToolkit().getScreenSize().width / 2,
Toolkit.getDefaultToolkit().getScreenSize().height / 2);
// poner el frame en el centro de la pantalla
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Terminar prg si se cierra el frame
// aadir componente en el contenedor
frame.getContentPane().add(scroll);
scroll.setViewportView(etiqueta); // vincular la etiqueta (y su contenido) con el scroll
Nota:
En el mtodo initialize slo deber tener las instrucciones descritas en los puntos 7. y 8. y todas
aquellas referidas a la construccin de la barra de mens, opciones y manejadores de eventos.
Cualquier otra instruccin comentarlas con //.
Prueba ejecutar el programa y verifica que funcione adecuadamente.
Responder:
Que representa Toolkit? : .................................................................................................................
..........................................................................................................................................................
Qu representa null?:.....................................................................................................................
9. Ahora nos centraremos en la gestin de eventos. Para ello y de forma anloga al paso 5. agrega un
oyente de eventos (Add Event Handler > action > actionPerformed) para la opcin Abrir del men
archivo y codificar el mtodo actionPerformed como se muestra a continuacin:
public void actionPerformed(ActionEvent arg0) {
dlgArchivo.setDialogTitle("Abrir Imagen"); // fijar ttulo al JFileChooser
// filtrar slo archivos .jpg .png .gif
if (dlgArchivo.getFileFilter().getDescription()!= "Imagenes")
// slo una vez
dlgArchivo.setFileFilter(new FileNameExtensionFilter("Imagenes", "jpg", "png", "gif"));
if (dlgArchivo.showOpenDialog(frame) == JFileChooser.APPROVE_OPTION) {
try {
// intentar cargar imagen
imagen = ImageIO.read( new File(dlgArchivo.getSelectedFile().getPath()) );
} catch (IOException error) { /* si ocurre error aqu se le trata */ }
if (imagen != null) {
// se pudo cargar la imagen?
// poner nombre en la barra de ttulo del frame
frame.setTitle(dlgArchivo.getSelectedFile().getPath());
//cargar archivo de imagen en la etiqueta
etiqueta.setIcon(new ImageIcon(dlgArchivo.getSelectedFile().getPath()));
mntmGuardar.setEnabled(true);
// hacer disponible la opcion Guardar
}
else
JOptionPane.showMessageDialog(frame, "No se pudo cargar la imagen", "Aviso",
JoptionPane.INFORMATION_MESSAGE);
}
}
Observaciones:
An no probar la ejecucin del programa, hay que hacer algunos ajustes.
Mover y modificar la instruccin de creacin del objeto JMenuItem Guardar de tal forma que
est antes de la creacin de la opcin Abrir y debe quedar como sigue:
final JMenuItem mntmGuardar = new JmenuItem("Guardar");
Y como instruccin siguiente a la anterior, inhabilitar la opcin Guardar, ello se logra con:
mntmGuardar.setEnabled(false);
Hacer los cambios y corrija posibles errores hasta Ejecutar correcamente el programa. Luego
analice el cdigo, haga pequeos cambios de ser necesario para entenderlo as como objetos,
propiedades y mtodos. Luego describa:
dlgArchivo.showOpenDialog(frame):
...................................................................................................
..............................................................................................................................................................
setFileFilter: .........................................................................................................................................
JFileChooser.APPROVE_OPTION:
ImageIO.read:
.......................................................................................................
.......................................................................................................................................
..............................................................................................................................................................
try {} catch {} : .......................................................................................................................
setIcon: ................................................................................................................................................
dlgArchivo.getSelectedFile().getPath():
................................................................................................
..........................................................................................................................................................
Prof. Simn Quispeluza M.
Analice el cdigo y explique. Detalle por ejemplo qu realiza o representa cada lnea de cdigo.