我刚刚开始使用Java,并且在登录后显示某些JButton时我正在开发一个小程序。我的问题是,我不知道使用actionListener。 继承人的代码:在JFrame中登录后显示JButton
public class Menu extends JFrame {
private JTextField f_usuario;
private JPasswordField f_pass;
private JList lista_libros;
private JButton b_ingreso;
private Usuario[] usuarios = new Usuario[5];
private Libro[] libros = new Libro[20];
private Object JPanel;
public static void main(String args[]) {
Menu application = new Menu();
//inicializa los usuarios
application.usuarios[0] = new Usuario("admin", "admin", true);
application.usuarios[1] = new Usuario("usuario1", "123", false);
application.usuarios[2] = new Usuario("usuario2", "123", false);
application.usuarios[3] = new Usuario("usuario3", "123", false);
application.usuarios[4] = new Usuario("usuario4", "123", false);
application.libros[0] = new Libro(1, "Igna", "Vicio", true, "");
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public Menu() {
super("Menu");
final boolean f = true;
JLabel e_usuario = new JLabel("Usuario");
JLabel e_pass = new JLabel("Pass");
JButton b_ingreso = new JButton("Entrar");
JList lista_libros = new JList();
b_ingreso.addActionListener(
new ActionListener() {
public boolean b;
public void actionPerformed(ActionEvent evento) {
validar();
}
}
);
f_usuario = new JTextField(15);
f_pass = new JPasswordField(15);
JScrollPane lista = new JScrollPane();
lista_libros = new JList(libros);
lista_libros.setVisibleRowCount(5);
lista_libros.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
lista.add(lista_libros);
JPanel ingreso = new JPanel();
ingreso.add(e_usuario);
ingreso.add(f_usuario);
ingreso.add(e_pass);
ingreso.add(f_pass);
ingreso.add(b_ingreso);
JPanel handler = new JPanel();
handler.add(new JScrollPane(lista_libros));
Container contenedor = getContentPane();
contenedor.setLayout(new FlowLayout());
contenedor.add(ingreso);
//if(b) JOptionPane.showMessageDialog(this, "");
Container contenedor1 = getContentPane();
contenedor.add(lista);
setSize(400, 250);
setVisible(true);
}
private boolean validar() {
int i;
boolean f = false;
String pass = new String(f_pass.getPassword());
if (f_usuario.getText().equals("") || pass.equals("")) {
JOptionPane.showMessageDialog(this, "Por favor complete todos los campos");
}
for (i = 0; i < 5; i++) {
if (f_usuario.getText().equals(usuarios[i].getUsuario()) && pass.equals(usuarios[i].getPass())) {
f = true;
}
}
if (f) {
JOptionPane.showMessageDialog(this, "Logueo exitoso");
} else {
JOptionPane.showMessageDialog(this, "La combinación de usuario y contraseña no existe");
}
return (true);
}
}
如果我使用“如果”它说,它不是更多钞票,所以我应该如何重新编写我的程序,让validar()显示的按钮我会稍后添加。例如,如果validar()= true,我想让可见的JButton允许我列出库的书籍。 也许这有点令人困惑,所以任何问题和ansewrs都会有所帮助。谢谢!
代码Usuario:
class Usuario {
private String usuario;
private String pass;
private boolean admin;
// constructor
public Usuario(String usuario, String pass, boolean admin) {
this.usuario = usuario;
this.pass = pass;
this.admin = admin;
}
// getter
public String getUsuario() { return usuario; }
public String getPass() { return pass; }
public boolean getAdmin() { return admin; }
// setter
public void setUsuario(String usuario) { this.usuario = usuario; }
public void setPass(String pass) { this.pass = pass; }
public void setAdmin(Boolean admin) {this.admin = admin;}
}
代码利布罗:
class Libro {
private int numero_id;
private String titulo;
private String autor;
private boolean reservado;
private String nombre_usuario_reserva;
// constructor
public Libro(int numero_id, String titulo, String autor, boolean reservado, String nombre_usuario_reserva) {
this.numero_id = numero_id;
this.titulo = titulo;
this.autor = autor;
this.reservado = reservado;
this.nombre_usuario_reserva = nombre_usuario_reserva;
}
// getter
public int getNumero_id() { return numero_id; }
public String getTitulo() { return titulo; }
public String getAutor() { return autor; }
public boolean getReservado() { return reservado; }
public String getNombre_usuario_reserva() {return nombre_usuario_reserva;}
// setter
public void setNumero_id() { this.numero_id = numero_id; }
public void setTitulo() { this.titulo = titulo; }
public void setAutor() { this.autor = autor; }
public void setReservado() { this.reservado = reservado; }
public void setNombre_usuario_reserva() {this.nombre_usuario_reserva = nombre_usuario_reserva;}
}
你能分享更多的代码,如Usuario&Libro吗? – Sknecht
当然,我在主要文章@Sknecht – frusciante
@frusciante中添加了@frusciante我将所有类都添加到了netbeans中的新项目中以运行您的代码,并且我添加了if和else'actionPerformed'并且它没有任何错误地工作。 –