public class Login extends JFrame{
private ArrayList<Usuario> usuarios;
private DialogoLogin dlgLogin;
private JMenuItem login;
private JMenuItem logout;
private JButton btCrearUser;
private JButton btRegistrarEquipo;
//Constructor JFrame
public Login() {
//Barra menu login
JMenuBar barraMenu = new JMenuBar();
JMenu acceso = new JMenu("Acceso Usuario");
login = new JMenuItem("Login Usuario");
login.addActionListener(new AccionLogin());
logout = new JMenuItem("Logout Usuario");
logout.addActionListener(new AccionLogout());
logout.setEnabled(false);
acceso.add(login);
acceso.add(logout);
barraMenu.add(acceso);
setJMenuBar(barraMenu);
//Usuarios
usuarios = new ArrayList<Usuario>();
usuarios.add(new Usuario("admin", "admin"));//Usuario de prueba
//controles interfaz
btCrearUser = new JButton("<html><p style=text-align:\"center\">Crear<br>Usuario</p></html>");
btCrearUser.setFont(new Font("Verdana", Font.BOLD, 24));
btRegistrarEquipo = new JButton("<html><p style=text-align:\"center\">Registrar<br>Equipo</p></html>");
btRegistrarEquipo.setFont(new Font("Verdana", Font.BOLD, 24));
btRegistrarEquipo.setEnabled(false);
//Maquetación
JPanel pnCrear = new JPanel();
pnCrear.add(btCrearUser);
pnCrear.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createEmptyBorder(40, 40, 40, 40),
BorderFactory.createRaisedSoftBevelBorder()));
JPanel pnRegistrar = new JPanel();
pnRegistrar.add(btRegistrarEquipo);
pnRegistrar.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createEmptyBorder(40, 40, 40, 40),
BorderFactory.createRaisedSoftBevelBorder()));
setLayout(new FlowLayout());
add(pnCrear);
add(pnRegistrar);
//Configuracion JFrame
setTitle("Ejemplo Login");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
//Acciones
private class AccionLogin implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
//Mostramos dialogo para login
dlgLogin = new DialogoLogin(null, true, usuarios, new AccionValidar());
dlgLogin.setVisible(true);
}
}
private class AccionLogout implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
//Desactivamos boton de registro y de login
btRegistrarEquipo.setEnabled(false);
login.setEnabled(true);
logout.setEnabled(false);
}
}
private class AccionValidar implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
/*
* Esta accion hace que el JDialog compruebe
* si los datos introducidos son validos para
* efectuar un login de usuario.
* En caso afirmativo, se activará el botón
* de registrar equipos y la función de logout.
* Y se cerrará el JDialog
*/
if (dlgLogin.validado()) {
btRegistrarEquipo.setEnabled(true);
logout.setEnabled(true);
login.setEnabled(false);
dlgLogin.dispose();
}
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Login(); //Se pone en marcha el JFrame
}
});
}
}