[RESOLVIDO]JComboBox em uma JTable

1 resposta
furacao123

Aew galera preciso implementar 3 jComboBox de Objetos dentro de uma JTable, mas esta faltando alguma manha que acabei esquecendo pq ja faz um tempo que faço isso com Swiing, ao selecionar o valor no combo ele nao altera o indice, só em modo de edição ele mostra o item selecionado...

Segue

public class ComboBoxRenderer extends JComboBox implements TableCellRenderer {

    public ComboBoxRenderer(List<ParametroFormulaOpcao> items) {
        super(items.toArray());
    }

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
            boolean hasFocus, int row, int column) {
        if (isSelected) {
            setForeground(table.getSelectionForeground());
            super.setBackground(table.getSelectionBackground());
        } else {
            setForeground(table.getForeground());
            setBackground(table.getBackground());
        }
        setSelectedItem(value);
        return this;
    }
}
public class ComboBoxEditor extends DefaultCellEditor {

    public ComboBoxEditor(List items) {
        super(new JComboBox(items.toArray()));
    }

    public ComboBoxEditor(String[] items) {
        super(new JComboBox(items));
    }
}
private void populaCombos() {
        tbFormulas.setModel(new FormulasModel(obj.getParametroFormulaICMSList()));
        tbFormulas.setRowHeight(20);
        TableColumn colOp1 = tbFormulas.getColumnModel().getColumn(1);
        colOp1.setCellEditor(new ComboBoxEditor(listaParamOpcao));
        colOp1.setCellRenderer(new CbParametroOpcaoRenderer(listaParamOpcao));

        String[] op = {"+", "-", "*", "/"};
        TableColumn colOperacao = tbFormulas.getColumnModel().getColumn(3);
        colOperacao.setCellEditor(new ComboBoxEditor(op));
        colOperacao.setCellRenderer(new CbParametroOperacaoRenderer(op));

        TableColumn colOp2 = tbFormulas.getColumnModel().getColumn(4);
        colOp2.setCellEditor(new ComboBoxEditor(listaParamOpcao));
        colOp2.setCellRenderer(new CbParametroOpcaoRenderer(listaParamOpcao));
    }

ele monta os combos mas quando eu seleciono algum valor ele mostra sempre o do indice 0 como selecionado
o que eu tenho que fazer para ele alterar o item selecionado no renderer da celula?

1 Resposta

furacao123

resolvi o problema estava no table model… vacilei esqueci de reescrever o metodo setValueAt

Criado 21 de dezembro de 2010
Ultima resposta 22 de dez. de 2010
Respostas 1
Participantes 1