Olá pessoal...
Minha duvida é pq o componente q eu adiciono na celula de um JTable só aparece quando a celula está em estado de edicao, ou seja, quando eu clico nela o componente que é um JPainel com um JComboBox e um JButton, aparece e quando a celula perde o focus, o componente some, e fica sómente o valor selecionado no JComboBox.
Na verdade eu sei o pq, rsrsrs, mas eu quero saber se nao existe uma maneira de deixar esse JPainel com os 2 componetes dentro de uma celula da JTable sempre visivel e nao só quando eu clico na celula em questao.
Abaixo o codigo extraido de um forum, nao lembro qual, para inserir o JComboBox na JTable.
class MeuCellEditor extends AbstractCellEditor implements TableCellEditor {
private MeuComponente editorComponent;
public MeuCellEditor(MeuComponente comp) {
this.editorComponent = comp;
}
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
editorComponent.getCombo().setSelectedItem(value);
return editorComponent;
}
public Object getCellEditorValue() {
return editorComponent.getCombo().getSelectedItem();
}
}
class MeuComponente extends JPanel {
private JComboBox combo;
public MeuComponente() {
this.setLayout(new BorderLayout());
this.add(combo = new JComboBox(), BorderLayout.CENTER);
this.add(new JButton("O"), BorderLayout.EAST);
combo.addItem("Teste1");
combo.addItem("Teste2");
combo.addItem("Teste3");
combo.addItem("Teste4");
}
public JComboBox getCombo() {
return combo;
}
}
e na hora de definir o modelo da tabela eu uso o seguinte codigo pra dizer que em determinada celula será adicionado o JPainel com o JComboBox e o JButton.
tabela.getColumnModel().getColumn(0).setCellEditor(new MeuCellEditor(new MeuComponente()));
Desde já grato, t+