Editar Elemento de uma JList, com Renderizador Personalizado

0 respostas
marcos.9306

Tenho uma JList na qual desejo exibir uma painel quando o seleciono(selectedPanel), e um outro painel quando não está selecionado.

Já consegui mostrar ambos os painéis, porém o painel selectedPanel tem alguns controles(uma JComboBox e um JButton) que desejo que usuário possa mexer, só que ao exibir este painel na linha selecionada da lista, ele fica estático, como uma imagem, não consigo fazer nada. Lembrei que na classe JTable o editor o renderer que tem a responsabilidade de exibir as células, mas não encontrei nada na especificação da JList, na SDN.

A subclasse do renderizador personalizado (funciona)

class MyRenderer implements ListCellRenderer {

        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {

            if (list.getSelectedIndex() == index) {
                return selectedPanel;
            } else {
                // return new NonSelectedPanel( (Plugin) value);            
                return new JLabel(value.toString());
            }
        }
    }

e o trecho de código da lista(também funciona)

lstPlugins.addListSelectionListener(new ListSelectionListener() {

            public void valueChanged(ListSelectionEvent lse) {
                    lstPlugins.setCellRenderer(new MyRenderer());
            }
        });

Alguma idéia de como fazer esse painel ficar “editável”? Ou é melhor usar uma JTable?

Criado 13 de agosto de 2009
Respostas 0
Participantes 1