Adicionando barra de rolagem para JList
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?
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