我剛剛開始使用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'並且它沒有任何錯誤地工作。 –