繁体   English   中英

JList在BorderLayout中无法正确显示

[英]A JList doesn't show properly in a BorderLayout

我正在编写一个显示JList的applet(在JScrollPane ); 在它里面有一个叫做libros的数组。

private Libro[] libros = new Libro[20];

Libro类:

package tp_libreria;

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;
    }
}

主类如下所示:

public class Menu extends JFrame {
    private JTextField f_usuario;
    private JPasswordField f_pass;
    private JList lista_libros;
    private JScrollPane lista;
    private JButton b_ingreso, b_lista_libros, b_reservar, b_agregar, b_eliminar;
    private Usuario[] usuarios = new Usuario[5];
    private Libro[] libros = new Libro[20];
    private int r;

    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.libros[1] = new Libro(2, "Gabriel", "Capo", true, "");
        application.libros[2] = new Libro(3, "Juio", "Maestro", true, "");
        application.libros[3] = new Libro(1, "JK", "Es", true, "");
        application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public Menu() {
        super("Menu");
        JLabel e_usuario = new JLabel("Usuario");
        JLabel e_pass = new JLabel("Pass");
        final JLabel e_log = new JLabel("Usuario invitado");
        JButton b_ingreso = new JButton("Entrar");
        JButton b_lista_libros = new JButton("Listar libros");
        final JButton b_reservar = new JButton("Reservar");
        final JButton b_agregar = new JButton("Agregar");
        final JButton b_eliminar = new JButton("Eliminar");
        JList lista_libros = new JList();

        b_ingreso.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent evento) {
                        if (validar() == true) { // muestra botones si es true
                            e_log.setText("Bienvenido " + usuarios[r].getUsuario());
                            b_reservar.setEnabled(true);
                            if (usuarios[r].getAdmin() == true) {
                                b_agregar.setEnabled(true);
                                b_eliminar.setEnabled(true);
                            }
                        } else {
                        }
                    }
                }
        );

        b_reservar.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                    }
                }
        );

        b_lista_libros.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        JOptionPane.showMessageDialog(null, "");
                        lista.setVisible(true);
                        getContentPane().validate();
                        getContentPane().repaint();
                    }
                }
        );

        b_agregar.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                    }
                }
        );

        b_eliminar.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                    }
                }
        );

        f_usuario = new JTextField(15);
        f_pass = new JPasswordField(15);

        lista_libros = new JList(libros);
        lista_libros.setVisibleRowCount(5);
        lista_libros.setLayoutOrientation(JList.VERTICAL);
        lista_libros.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

        lista = new JScrollPane(lista_libros);
        lista.setVisible(false);

        JPanel ingreso = new JPanel();
        ingreso.add(e_usuario);
        ingreso.add(f_usuario);
        ingreso.add(e_pass);
        ingreso.add(f_pass);
        ingreso.add(b_ingreso);
        ingreso.add(e_log);

        JPanel botones = new JPanel();
        botones.add(b_lista_libros);
        botones.add(b_agregar);
        botones.add(b_reservar);
        botones.add(b_eliminar);

        JPanel contenedor = new JPanel();
        contenedor.setLayout(new FlowLayout());

        contenedor.add(ingreso);
        contenedor.setVisible(true);

        JPanel contenedor1 = new JPanel();
        contenedor1.setLayout(new GridLayout(4, 1));
        contenedor1.add(b_lista_libros);
        contenedor1.add(b_agregar);
        contenedor1.add(b_reservar);
        contenedor1.add(b_eliminar);

        b_agregar.setEnabled(false);
        b_reservar.setEnabled(false);
        b_eliminar.setEnabled(false);

        JPanel a = new JPanel();
        a.setLayout(new BorderLayout());
        a.add(contenedor, BorderLayout.NORTH);
        a.add(contenedor1, BorderLayout.WEST);
        a.add(lista, BorderLayout.CENTER);

        Container a1 = getContentPane();
        a1.setLayout(new FlowLayout());
        a1.add(a);

        setSize(1024, 550);

        setVisible(true);
    }
}

小程序

因此,该列表不正确。

您定义一个实例变量:

private JList lista_libros;

和一个局部变量:

JList lista_libros = new JList();

我猜你应该没有局部变量:

//JList lista_libros = new JList();
lista_libros = new JList();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM