Pergunta

Eu estou tentando adicionar uma barra de rolagem a um JList (que usa um modelo de dados personalizado). Adicionando um JScrollPane realmente couros o JList, em vez de adicionar uma barra de rolagem. Quando eu executar o código com a barra de rolagem, o JList não é visível, e eu não posso ver os dados.

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

Comentando o listScrollPane = ... linha torna o JList visível novamente e ele funciona como esperado.

O que eu perdi?

Foi útil?

Solução

Você precisa adicionar o painel de rolagem para o recipiente, e não na lista.

No seu exemplo atual, adicionando a lista no painel de rolagem, ele remove a lista de seu recipiente original, uma vez que um componente pode ter apenas um pai.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top