Adición de barra de desplazamiento para JList
Pregunta
Estoy intentando añadir una barra de desplazamiento a un JList (que utiliza un modelo de datos personalizados). La adición de un JScrollPane realidad cueros el JList, en lugar de añadir una barra de desplazamiento. Cuando ejecuto el código con la barra de desplazamiento, el JList no es visible, y no puedo ver los datos.
playlistField = new JList(playlist); // playlist is a data model
playlistField.setLocation(32, 220-36);
playlistField.setSize(350,120);
playlistField.setVisible(true);
this.add(playlistField);
listScrollPane = new JScrollPane(playlistField, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
Al comentar el listScrollPane = ... hace que la línea de JList visible de nuevo y funciona como se esperaba.
¿Qué me he perdido?
Solución
Es necesario añadir el panel de desplazamiento al contenedor, y no a la lista.
En el ejemplo actual, mediante la adición de la lista en el panel de desplazamiento, se elimina la lista de su envase original, ya que un componente puede tener sólo uno de los padres.