E ai Pessoal, blz???
Estou tento problemas como JComboBox dentro de uma JTable, eu resolvi trabalhar de uma maneira um pouco diferente da tradicional.
Normalmente o é feito é a implementaçãol do AbstractTableModel, atribuido a JTable e em seguida é atribuido ao TableColumn da coluna escolhida para conter o JComboBox o um novo DefaultCellEditor, que recebe no construtor o JComboBox definido. O DefaultCellEditor é atribuido como CellEditor da TableColumn.
O que eu fiz foi um pouco diferente, no meu problema eu necessito de um listener por linha, para facilitar as coisas um criei um objeto que contém cada um dos itens que deverão ser exibidos na planilha. Na planilha eu criei um Render e um Editor para cada coluna, definindo assim que toda coluna deverá conter um objeto, na maioria foi utilizado JLabel, e em duas utilizei JComboBox e JButton.
searchResultTable.getColumnModel().getColumn(1).setCellRenderer(new LabelRenderer());
searchResultTable.getColumnModel().getColumn(1).setCellEditor(new LabelEditor());
searchResultTable.getColumnModel().getColumn(2).setCellRenderer(new LabelRenderer());
searchResultTable.getColumnModel().getColumn(2).setCellEditor(new LabelEditor());
searchResultTable.getColumnModel().getColumn(3).setCellRenderer(new LabelRenderer());
searchResultTable.getColumnModel().getColumn(3).setCellEditor(new LabelEditor());
searchResultTable.getColumnModel().getColumn(4).setCellRenderer(new ComboRenderer());
searchResultTable.getColumnModel().getColumn(4).setCellEditor(new ComboEditor());
searchResultTable.getColumnModel().getColumn(5).setCellRenderer(new LabelRenderer());
searchResultTable.getColumnModel().getColumn(5).setCellEditor(new LabelEditor());
Minha tabela começa vazia, e é preenchida de acordo com um select efetuado em uma outra tela do sistema. Após o filtro ele efetua um load na tela onde contem esta tabela. Esse load pode ser feito em vários passos, não é sempre de primeira, ele pode querer carragar dados de diferentes filtros.
Para adicionar uma linha eu pego o meu objeto e peço a referência dos objetos desejados, ele já retorna para mim um Vector.
tableModel.addRow(testCase.getRow());
Bom, isso está funcionando. Eu construo a tabela, ela é criada com os objetos desejados, no TableModel eu limitei as colunas que podem ser editadas, ta tudo funcionando bem, SÓ, tem um probleminha.
Quando eu vou remover a linha, eu acesso o TableModel e removo a linha escolhida, a linha é removida, mas o JComboBox não, isso não é uma regra, aconteça com uma frequência alta, mas não é sempre.
O JComboBox fica na exata posição em que ele estava antes de ser removido.
Alguém tem alguma idéia do que pode estar acontecendo?
Não sei como resolver isso, e infelizmente e eu utilizar o método tradicional vou aumentar a complexidade no controle das notificações.
Agradeço qualquer sugestão ou opinião!
Abraços
Juliano.
PS: Segue uma imagem do problema.
O JComboBox contendo o texto Serial não deveria existir.
