Es un componente usado par armar programas en modo "gráfico" basado en texto. La mayoría de las aplicaciones de uso empresarial usan este modo. Por ejemplo, Netbeans está programado con Swing.
Java FX:
Es un componente usado par armar programas en modo Gráfico. Será objeto de estudio en otra oportunidad.
Swing posee componentes (Boton, Campo de Texto, Etiqueta, etc), Contenedores (JFrame, JPanel, y otros contenedores de componentes)
Eventos que permiten
interactuar con los usuarios. En Java, se representan a través de
métodos, cada componente tiene sus propios eventos.
Por
ejemplo, el evento más importante de un botón es mouseClicked; esto
quiere decir que cuando el usuario presione el botón se llamará al
método mouseClicked()Pasos para comenzar a usar Swing con NetBeans:
1. Entrar a Netbeans, crear proyecto, quitar check a "Create Main Class"
2. En el menu de la izquierda, clic derecho en "default Package", elegir New-> JPanel:
3. El nombre debe ir con la primera en Mayuscula y el Paquete, sin mayuscula (ejemplo "gui")
4. Se ha creado el gui y dentro de ese packete está la Ventana.java
4. El editor de codigo es el siguiente:
Creacion de una ventana:
1. Crear un Label y ubicarlo manualmente en la pantalla:
2. Modificar las propiedades del Label, (Ejemplo, centrar, color, tipo de fuente, etc)
3. Separadores:
4. Agregar Textfields y botones:
Agregar Labels y TextFields necesarios.
Para el field de contraseña, debe usarse el "Password Field"
Password Field:
6. Cambiar nombres de variables para los botones:
Esto nos facilita la identificación del botón cuando estemos trabajando en código:
Esta acción es recomendable repetir en todos los elementos que vayamos a programar desde código (ejemplo, botones, cajas de texto, contenido de información, etc)
Agregar comportamiento a botones en Java:
1. Doble clic en el botón. (Ejemplo limpiar)
2. En el código asociado a ese botón, usaremos el metodo setText:
Al compilar debería ejecutarse la instrucción, al hacer clic en boton "limpiar" debería aparecer un texto llamado "hola"
Sin embargo, vamos a asignar las acciones que correspondan a lo que esperamos de los botones.
Ejemplo lògica Login:
Si el usuario != pepito -> Usuario incorrecto
Si no:
Si la contraseña no es "12345" -> contraseña incorrecta
Solución:
1. Vamos a usar el texto ingresado, guardarlo en un string. Para eso debemos declarar String para usar getText
2. Asignar lógica a las acciones del boton:
3. Solución a toda la lógica:
Nota:
En la línea 144, la palabra getText(); aparece "tachado", lo que básicamente es una recomendación de NetBeans para usar otro método diferente, (lo considera inseguro para campos de password).
El método recomendado es getPassword(). Sin embargo, necesitamos tener en cuenta que getPassword no funciona con strings. Funciona con Char
Agregar eventos por teclado:
private void presionarTecla(java.awt.event.KeyEvent evt) {
char tecla = evt.getKeyChar();
if (tecla=='\n'){ // este if permite hacer ALGO si el usuario pulsa tecla ENTER (ENTER ES \n).
botonloginActionPerformed(null); //es el metodo que dispara toda la accion. pasamos "null" para pasar algo. (no se puede ejecutar sin pasar nada)
}
System.out.println(tecla);
}
Ver código completo:
private void botonLimpiarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
usuarioTextField.setText(""); //al hacer clic en el boton, se limpia
contrasenaTextField.setText(""); //al hacer clic en el boton, se limpia
}
private void botonloginActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String usuario = usuarioTextField.getText();
char[] contrasena = contrasenaTextField.getPassword(); // tipo char para poder usar getPassword();
String contrasenaString = new String(contrasena); //creo un nuevo tipo de dato string a partir de un char
if (usuario.equals("pepito")&& contrasenaString.equals("12345")){
informacionLabel.setText("Bienvenido pepito");
}else if (usuario.equals("pepito"))
{
informacionLabel.setText("Contraseña Incorrecta");
} else {
informacionLabel.setText("Usuario incorrecto");
}
}
private void presionarTecla(java.awt.event.KeyEvent evt) {
char tecla = evt.getKeyChar(); //permite capturar en la variable tecla, lo que esté capturando el teclado
/*if (tecla=='a'){ // este if permite hacer ALGO si el usuario escribe alguna tecla (ejemplo "a").
System.out.println("hola");
}
*/
if (tecla=='\n'){ // este if permite hacer ALGO si el usuario pulsa tecla ENTER (ENTER ES \n).
botonloginActionPerformed(null); //es el metodo que dispara toda la accion. pasamos "null" para pasar algo. (no se puede ejecutar sin pasar nada)
}
System.out.println(tecla);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Ventana.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Ventana.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Ventana.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Ventana.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Ventana().setVisible(true);
}
});
}
Tip: (Ctr + Espacio ayuda a escribir las instrucciones, métodos, etc)
No hay comentarios:
Publicar un comentario