Adding Scrollbar to JList

Taj Morton picture Taj Morton · Jun 2, 2009 · Viewed 18k times · Source

I'm trying to add a scrollbar to a JList (which uses a custom data model). Adding a JScrollPane actually hides the JList, instead of adding a scrollbar. When I run the code with the scrollbar, the JList is not visible, and I cannot see the data.

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

Commenting out the listScrollPane = ... line makes the JList visible again and it works as expected.

What did I miss?

Answer

Aakash picture Aakash · Jun 2, 2009

You need to add the scrollpane to the container, and not the list.

In your current example, by adding the list in the scrollpane, it removes the list from its original container, since a component can have only one parent.