JComboBox em JTable

Oi!

gostaria de saber se tem como eu colocar um combobox dentro de uma tabela utilizando o modelo da tabela q eu criei.
se tiver… como eu faço??

pesquisa no forum e na internet só encontrei adcionando em modelos default.

valeu pela atenção!

[]'s

  1. Faça sua coluna retornar o tipo List.class no getColumnClass();
  2. Adicione um editor personalizado para a sua table, com o método table.setDefaultEditor(List.class, seuEditor).
  3. Adicione um renderer personalizado para a sua table, com o método table.setDefaultEditor(List.class, seuRenderer).

Agora vem o segundo problema, como criar esse renderer e esse editor? Aqui está a solução:

public class MyComboBoxRenderer extends JComboBox implements TableCellRenderer {
        public MyComboBoxRenderer(String[] items) {
            super(items);
        }
    
        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());
            }
    
            // Select the current value
            setSelectedItem(value);
            return this;
        }
    }
    
    public class MyComboBoxEditor extends DefaultCellEditor {
        public MyComboBoxEditor(String[] items) {
            super(new JComboBox(items));
        }
    }

a parte do renderer eu tinha pego aqui no forum

mas a parte do getColumnClass eu não vi.

uma pergunta besta… mas eu não sei =/

como eu faço o retorno de um List.class?

tem algum exemplo?

valeu pela atenção Vini!

@Override public Class<?> getColumnClass(int row, int column) { if (column == COLUNA_DA_COMBO) { return List.class; } }

eu fiz assim

    public Class<?> getColumnClass(int row, int column)
    {
       if (column == COL_TIPO) {
          return List.class;
       }
       else
           return null;

    }

class MyComboBoxEditor extends DefaultCellEditor {
  public MyComboBoxEditor(List items) {
    super(new JComboBox(items.toArray()));
  }

class ComboBoxRenderer extends JComboBox implements TableCellRenderer {
  public ComboBoxRenderer(List items){
    super(items.toArray());
  }

  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;
  }
}



}

eu coloquei um construtor como List… porque os dados vem de uma consulta.

o que falta agora =/ ?

e agora eu to pensando… como eu vo fazer pra jah vim o combobox com o valor certo que o registro tem?

complicado isso =/

valeu Vini =D