A JList doesn't show properly in a BorderLayout

时间:2016-07-11 19:26:15

标签: java swing applet jlist border-layout

I'm programming an applet which shows a JList (in a JScrollPane); inside of it there is an array called libros.

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

The Libro class:

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

The main class looks like this:

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

applet

So the list isn't okay.

1 个答案:

答案 0 :(得分:1)

You define an instance variable:

private JList lista_libros;

and a local variable:

JList lista_libros = new JList();

I would guess you should not have the local variable:

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