Vamos a continuar con las vistas...
El siguiente JPanel que vamos a hacer es el correspondiente a la identificación:
public class PanelIdentificacion implements ActionListener {
// JPanel auxiliares
private JPanel r1;
private JPanel r2;
private JPanel r3;
// elementos del formulario
private JTextField userField;
private JPasswordField passField;
// backgrounds del formulario
private final Color BACKGR0=Color.WHITE;
private final Color BACKGR1=Color.RED;
public PanelIdentificacion() {
}
public JPanel makePanelIdentificacion() {
JPanel panel=new JPanel();
panel.setLayout(new GridLayout(6,1));
// los componentes van colocados en tres paneles auxiliares
r1=new JPanel();
r2=new JPanel();
r3=new JPanel();
// creamos los componentes del panel 1
JLabel name=new JLabel("Usuario ");
name.setFont(new Font("Arial",Font.BOLD,18));
userField=new JTextField("");
userField.setBackground(BACKGR0);
userField.setToolTipText("Entre 6 y 20 caracteres");
// añadimos al panel con labels de margenes
r1.add(new JLabel(" "));
r1.add(name);
r1.add(userField);
r1.add(new JLabel(" "));
r1.setLayout(new BoxLayout(r1,BoxLayout.X_AXIS));
// creamos los componentes del panel 2
JLabel pass=new JLabel("Contraseña ");
pass.setFont(new Font("Arial",Font.BOLD,18));
passField=new JPasswordField("");
passField.setBackground(BACKGR0);
passField.setToolTipText("Entre 6 y 20 caracteres");
// añadimos al panel con labels de margenes
r2.add(new JLabel(" "));
r2.add(pass);
r2.add(passField);
r2.add(new JLabel(" "));
r2.setLayout(new BoxLayout(r2,BoxLayout.X_AXIS));
// creamos los componentes del panel 3
JButton button1=new JButton("Login");
button1.setToolTipText("Pulse para entrar en la aplicación");
JButton button2=new JButton("Salir");
button2.setToolTipText("Pulse para salir de la aplicación");
JButton button3=new JButton("Nuevo");
button3.setToolTipText("Pulse para crear un nuevo usuario");
// añadimos al panel
r3.add(button1);
r3.add(button2);
r3.add(button3);
// activamos los listeners de los botones
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
// finalmente, componemos el JPanel para return
// añadiendo los paneles auxiliares y algunos JLabels para separacion
panel.add(new JLabel(" "));
panel.add(r1);
panel.add(new JLabel(" "));
panel.add(r2);
panel.add(new JLabel(" "));
panel.add(r3);
panel.setBorder(BorderFactory.createRaisedBevelBorder());
panel.setVisible(true);
return panel;
}
/**
* Este método realiza una simple comprobación de los datos del formulario
* @return boolean
*/
private boolean checkForm() {
// inicializamos por comprobacion de formulario
boolean result=true;
userField.setBackground(BACKGR0);
passField.setBackground(BACKGR0);
if (userField.getText().trim().length()<6 || userField.getText().trim().length()>20) {
userField.setBackground(BACKGR1);
result=false;
}
char[] pss=passField.getPassword();
if (pss.length<6 || pss.length>20) {
passField.setBackground(BACKGR1);
result=false;
}
return result;
}
@Override
public void actionPerformed(ActionEvent arg0) {
String source=arg0.getActionCommand();
if (source.equals("Login")) {
// identifica el usuario en la aplicacion
if (checkForm()) {
UsuariosDAO userDAO=new UsuariosDAO();
String us=userField.getText().trim();
char[] pss=passField.getPassword();
String ps=String.valueOf(pss);
Usuarios activeUser=userDAO.identifyUsuario(us,ps);
if (activeUser!=null) {
// usuario identificado, pasamos el control al main
// FALTA IMPLEMENTAR METODO DE CAMBIO DE PANTALLA
} else {
JOptionPane.showMessageDialog(null, "No existe el usuario/password suministrado", "Identificación de usuarios", JOptionPane.ERROR_MESSAGE);
}
} else {
JOptionPane.showMessageDialog(null, "Error en los datos del formulario", "Identificación de usuarios", JOptionPane.ERROR_MESSAGE);
}
}
// salir de la aplicacion
if (source.equals("Salir")) {
// salir
if (JOptionPane.showConfirmDialog(null, "¿Seguro que desea abandonar la aplicación?", "Salir de la aplicación", JOptionPane.YES_NO_OPTION)==0) {
System.exit(0);
}
}
// crear nuevo usuario
if (source.equals("Nuevo")) {
// FALTA IMPLEMENTAR METODO DE CAMBIO DE PANTALLA
}
}
} // *********** END OF CLASS
El panel, quedará con este aspecto. Recordad que el panel es lo que tenemos en relieve resaltado. El resto es el JFrame donde irá integrado.
Al igual que la clase anterior, esta clase tiene 3 métodos: el makePanelIdentificacion() que crea el panel; el checkForm() empleado para chequear el formulario; y el ActionPerformed() implementado para el control de los eventos de pulsación de los botones.
Detalles:
- Utilizamos JLabels para realizar los ajustes y espaciados de los elementos del JPanel.
- En checkForm() se utiliza la propiedad backGround de los JTextField para remarcar los errores. Siempre que tenemos formularios hay que tener un checkform que verifique, antes de la grabación, si los campos del formulario se adaptan a los requisitos.
- En "Salir" realizamos la salida "controlada" de la aplicación. Si tuviéramos que guardar variables, cerrar conexiones, etc., lo haríamos aquí de forma ordenada.
- No hemos creado aún los métodos de ir al formulario de creación, ni el método de entrar en la aplicación una vez identificado. Serán desarrollados más adelante. Dejamos advertencia en el lugar correspondiente
No hay comentarios:
Publicar un comentario