10 Guiados Jframes
10 Guiados Jframes
JAVA:
JFRAMES. FORMULARIOS
JFRAME
btnTitulo txtTitulo
btnMaximizar
btnMinimizar
btnRestaurar
txtPosX
txtPosY
btnVerde
btnMover btnAzul
btnRojo
btnEstiloJava
btnEstiloWindows
btnEstiloMotif
btnEstiloMac
2. Empiece programando el siguiente código en el botón Titulo:
String titulo;
titulo = txtTitulo.getText();
this.setTitle(titulo);
Este código permite cambiar el título del formulario. Concretamente asigna el título que
se haya escrito en el cuadro de texto título. Ejecute el programa para comprobarlo:
Escribes un título y al
pulsar el botón se
cambia el título de la
ventana.
String titulo;
titulo = txtTitulo.getText();
Se crea una variable de texto llamada titulo y luego se recoge el texto del cuadro de
texto txtTitulo en dicha variable.
this.setTitle(titulo);
En primer lugar observe la palabra this. Siempre que encuentre esta palabra se
referirá al objeto global en el que está programando. En nuestro caso, this se refiere
al formulario. Así pues, usaremos this para referirnos al formulario donde estamos.
Por otro lado estamos usando el método setTitle que permite cambiar el título del
formulario. El título que se pone viene indicado por la variable titulo.
4. Ahora añada al botón Maximizar el siguiente código:
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
(Nota, NetBeans le pedirá que agregue la librería -el import- para JFrame)
Este método puede recibir distintos valores según lo que se quiera hacer con la
ventana (maximizarla, minimizarla o restaurarla)
int x,y;
String px, py;
px = txtPosX.getText();
py = txtPosY.getText();
x = Integer.parseInt(px);
y = Integer.parseInt(py);
this.setLocation(x,y);
9. Este código permite que el usuario introduzca una posición x,y y al pulsar el botón
Mover el formulario cambiará de sitio en la pantalla. Compruébelo.
Se introducen las
coordenadas y se
pulsa el botón
Mover.
El formulario se
colocará en dichas
coordenadas.
int x,y;
String px, py;
px = txtPosX.getText();
py = txtPosY.getText();
x = Integer.parseInt(px);
y = Integer.parseInt(py);
Se usan dos variables auxiliares de tipo texto px y py para recoger el contenido de los
cuadros de textos para posteriormente convertirlos a número.
this.setLocation(x,y);
this.getContentPane().setBackground(Color.GREEN);
13. Observe el funcionamiento del programa. Verá como el formulario cambia al color
verde al pulsar este botón.
Panel de
Objeto JFrame Contenidos
(formulario)
15. Debes observar que el panel de contenidos está sobre el formulario. Esto quiere decir
que si cambiáramos el color del formulario no notaríamos nada ya que el panel de
contenido tapa al formulario.
16. Por lo tanto, para cambiar el color de la ventana y que se note, en realidad, se lo
tendrá que cambiar al panel de contenidos.
this.getContentPane()
18. Por tanto, si quiere cambiar el color del panel de contenidos, tendrá que aplicar el
método setBackground a lo anterior:
this.getContentPane().setBackground(Color.GREEN);
19. Programe ahora el botón Estilo Windows de la siguiente forma:
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
SwingUtilities.updateComponentTreeUI(this);
}catch(Exception e) {
JOptionPane.showMessageDialog(null,
"Error al presentar el estilo",
"Error",
JOptionPane.ERROR_MESSAGE);
}
Las dos líneas más importantes del código son las siguientes:
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
SwingUtilities.updateComponentTreeUI(this);
"com.sun.java.swing.plaf.windows.WindowsLookAndFeel"
Según la cadena que uses, la apariencia que se aplique será una u otra. En este
caso, la cadena anterior es la correspondiente a la apariencia de Windows. Después
se indicarán otras cadenas que pueden ser usadas.
Al escribir estas dos líneas NetBeans le pedirá el import para los objetos UIManager y
SwingUtilities.
22. El código anterior es enrevesado pero siempre se usa igual. Lo único que hay que
cambiar es la cadena de texto que indica la apariencia. Puede usar las siguientes
cadenas de texto de apariencia:
"com.sun.java.swing.plaf.windows.WindowsLookAndFeel"
"javax.swing.plaf.metal.MetalLookAndFeel"
"com.sun.java.swing.plaf.motif.MotifLookAndFeel"
"com.sun.java.swing.plaf.mac.MacLookAndFeel"
23. Este código es considerado por NetBeans como “peligroso”, ya que puede producir
errores. Esto es debido a que un sistema operativo puede que no admita el estilo de
ventanas de otro sistema operativo.
Así pues NetBeans obliga a que se use un try...catch para capturar posibles
excepciones. Y, de hecho, si no se usa un try...catch, el NetBeans mostrará un error.
24. Esta es la razón por la que se rodea el código con un try...catch. En la parte del catch
simplemente mostramos un mensaje de error usando un JOptionPane (tendrá que
incluir el import para este objeto)
25. Con la información proporcionada en los puntos anteriores, programe usted solo los
botones Estilo Java, Estilo Motif y Estilo Mac. Compruebe el resultado.
1. Los formularios como los demás elementos de una ventana posee eventos que
pueden ser programados. Se nombrarán cuatro eventos:
2. El evento windowOpened puede ser usado como zona donde programar una
presentación o una bienvenida. Pruebe a programar en el evento windowOpened del
formulario del proyecto anterior lo siguiente:
JOptionPane.showMessageDialog(null,"Bienvenido");
Pruebe el programa.
EXIT_ON_CLOSE
- hace que el programa termine.
HIDE
- el formulario se oculta.
DISPOSE
- el formulario se cierra (pero el programa no termina, a no ser que este sea el
único formulario abierto del programa).
DO_NOTHING
- No hace nada (el formulario no se cierra).
4. Asigne el valor DO_NOTHING al formulario y pruebe a ejecutar el programa.
Observará que no podrá cerrar el formulario al pulsar el botón cerrar.
5. ¿De qué sirve asignar el valor DO_NOTHING a un formulario, aparte de ser ideal
para gastar bromas? Veamos:
6. Al pulsarse el botón cerrar del formulario se ejecuta el evento windowClosing, así que
programe en él lo siguiente:
int resp;
resp=JOptionPane.showConfirmDialog(null,
"¿Desea Salir?",
"Salida",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE);
if (resp==JOptionPane.YES_OPTION) {
this.dispose();
}
this.dispose();
Esta línea ejecuta el método dispose del formulario (this). Este método cierra el
formulario desde código.
8. En caso de que el usuario pulsara No, no se ejecuta el método dispose, y por tanto
no se cierra el formulario. El código anterior es el código típico para pedir
confirmación de salida del programa.
CONCLUSIONES
JFRAME
this.getContentPane()
- Eventos. Los formularios poseen eventos que pueden ser programados. Entre
los más interesantes están el evento windowOpened que sucede cuando la
ventana se abre y windowClosing que sucede cuando el usuario pulsa el
botón cerrar.