Aew galera, to precisando da ajuda de vcs… pesquisa em um monte de sites e inclusive aqui no GUJ, porem nenhum exemplo me ajudou… e até agora nao entendi bem como funciona…
Eu tenho um table Model e criei um Cell Editor tbm:
import java.awt.Component;
import javax.swing.AbstractCellEditor;
import javax.swing.JComboBox;
import javax.swing.JTable;
import javax.swing.table.TableCellEditor;
/**
*
*
*/
public class CellEditor extends AbstractCellEditor
implements TableCellEditor {
private JComboBox field;
private String[] values = {"1", "2"};
@Override
public Component getTableCellEditorComponent(JTable table,
Object value, boolean isSelected, int row, int column) {
field = new JComboBox(values);
return field;
}
@Override
public Object getCellEditorValue() {
return field.getSelectedItem().toString();
}
}
Metodo getValueAt do TableModel
[code]
@Override
public Object getValueAt(int linha, int coluna) {
NotaFiscalEntrada c = notafiscalent.get(linha);
Pessoa p = c.getFornecedor();
CellEditor ce = new CellEditor();
switch (coluna) {
case 0:
return c.getNNf();
case 1:
return p.getNome_razao();
case 2:
return Funcoes.DataSQLtoUtilString(c.getDataEmissao());
case 3:
return Funcoes.DataSQLtoUtilString(c.getDataChegada());
case 4:
return c.getValorTotal();
case 5:
return ce.getCellEditorValue();
default:
return null;
}
}[/code]
Alguem sabe como funciona?
[]'s
Funciona assim.
- Você cria um CellEditor. Ele é responsável apenas por ser o editor da célula;
- Você associa esse cellEditor a um tipo de dado, através do método setDefaultEditor do JTable;
- Você faz seu TableModel retornar o tipo de dado associado, na coluna que o editor deve atuar, através do método getColumnClass do TableModel;
- Quando o usuário for editar o campo, o editor é mostrado. O valor final é automaticamente capturado e inserido no método setValueAt do seu TableModel.
O TableModel não precisa conhecer o editor. Você não deve criar seu CellEditor dentro do TableModel.
Seu CellEditor deve ser corrigido para:
[code]public class ComboBoxEditor extends AbstractCellEditor
implements TableCellEditor {
private JComboBox field;
private String[] values = {"1", "2"};
@Override
public Component getTableCellEditorComponent(JTable table,
Object value, boolean isSelected, int row, int column) {
field = new JComboBox(values);
field.setSelectedItem(value); //Deixa o editor pré-selecionado com o valor da célula
return field;
}
@Override
public Object getCellEditorValue() {
return field.getSelectedItem().toString();
}
}[/code]
Depois, associe o editor a JTable:
Faça a coluna 5 do seu TableModel retornar o valor correto, do campo que será exibido no JTable;
Faça o seu método getColumnClass retornar NotaFiscal.class para a coluna 5 (foi o valor que usamos no setDefaultEditor).
public Class<?> getColumnClass(int col) {
if (col == 5)
return NotaFiscal.class;
...
}
Cara oo confusao danada… hsauhsuahs
fiz o seguinte:
public class ComboBoxEditor extends AbstractCellEditor
implements TableCellEditor {
private JComboBox field;
private Produtos[] values = {new Produtos(), new Produtos()};
@Override
public Component getTableCellEditorComponent(JTable table,
Object value, boolean isSelected, int row, int column) {
field = new JComboBox(values);
field.setSelectedItem(value); //Deixa o editor pré-selecionado com o valor da célula
return field;
}
@Override
public Object getCellEditorValue() {
return field.getSelectedItem().toString();
}
}
No caso o combo deveria retornar 2 valores com id = null;
e no table model
@Override
public Class<?> getColumnClass(int coluna) {
// todas as colunas representam uma String
if (coluna == 5) {
return Produtos.class;
}
return String.class;
@Override
public Object getValueAt(int linha, int coluna) {
NotaFiscalEntrada c = notafiscalent.get(linha);
Pessoa p = c.getFornecedor();
switch (coluna) {
case 0:
return c.getNNf();
case 1:
return p.getNome_razao();
case 2:
return Funcoes.DataSQLtoUtilString(c.getDataEmissao());
case 3:
return Funcoes.DataSQLtoUtilString(c.getDataChegada());
case 4:
return c.getValorTotal();
case 5:
return new Produtos();
default:
return null;
}
}
}
e na minha classe :
jTabelaNF.setModel(tmnf);
jTabelaNF.setDefaultEditor(Produtos.class, new ComboBoxEditor());
e nada de vim o combo na tabela 
Brigadao pela explicação vini 
[]'s
Você está mexendo no editor. O editor aparece só quando você edita a célula. Você chegou a ativar a edição da célula?
Quem exibe a célula não é o editor, e sim o Renderer.
Grande vini… hahahha
O editable das celulas estava FALSE…
troquei para true e ta bombando aqui… 
Brigadao
[]'s
Seguinte eu consegui criar o combobox dentro do meu Jtable porém eu nao consigo setar qual valor eu quero que seja mostrado no combobox via codigo.
Ou seja eu consigo na celula fazer um setValueAt porem no combobox como eu vou setar o valor? Lembrando que ele foi passado pelo Renderer.
Obrigado
Olá. estou seguindo o seu exemplo e nao conseguir colocar o meu jcombobox no jtable; e gostaria de passar o meu exemplo pra vc me ajudarem;
Vou mandar os meus arquivos .java para vcs verem.
Muito obrigado