Ciao a tutti ragazzi,
ho una tabella con 6 colonne di cui l'ultima è una combobox. La tabella contiene dei dati prelevati da database e la creazione della tabella con la combobox e la popolazione sia della tabella che della combobox va tutto ok.
Adesso devo implementare il seguente comportamento: aggiungo una riga alla tabella con un bottone (OK), inserisco i dati nelle rispettive celle, selezioni il valore corretto dalla combobox e devo memorizzare questi dati sul database.
Il problema è che non riesco a recuperare l'elemento selezionato dalla combobox.
Potete aiutarmi?

Vi posto un po di codice:
Questo è il codice per la creazione della struttura della tabella e per la popolazione della combobox:
codice:
       String [] colonne = {"ID","Data Acquisto","Descrizione","Importo Base","Tariffa","Categoria"};
       Vector rows=new Vector();
        Vector columns= new Vector();
        for(int i=0;i<colonne.length;i++){
            columns.addElement((String) colonne[i]);
        }     
        DefaultTableModel tabModel = new DefaultTableModel() {

                    @Override
                    public boolean isCellEditable(int i, int i1) {     
                        if (i1 == 0)                                   
                            return false;
                        else
                            return true;
                    }

                };
        tabModel.setDataVector(rows,columns);       
        tabModel.fireTableStructureChanged();        
        accessoryTable.setModel(tabModel);           
        accessoryTable.getModel().addTableModelListener(this);  
        TableColumn catVeicolo = accessoryTable.getColumnModel().getColumn(5);  
        catVeicoloCB = new JComboBox();
        catVeicoloCB.addItem("Seleziona...");
        try {
            MysqlOp.getInstance().eseguiQuery("select * from Categoria_Veicolo;");
            ResultSet rs = MysqlOp.getInstance().getResultSet();
            while(rs.next()){
                catVeicoloCB.addItem(rs.getString("categoria")+" - "+rs.getString("descrizione"));
            }
        } catch (SQLException ex) {
            Exceptions.printStackTrace(ex);
        }
        catVeicolo.setCellEditor(new DefaultCellEditor(catVeicoloCB));          
        DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();     
        renderer.setToolTipText("Clicca per scegliere altre opzioni");          
        catVeicolo.setCellRenderer(renderer);
Questa è l'implementazione del listener associato alla tabella, che uso per gestire gli aggiornamenti e gli inserimenti:
codice:
    public void tableChanged(javax.swing.event.TableModelEvent source){//Table Changed Method
        TableModel tabMod = (TableModel)source.getSource();
        switch (source.getType()){
             case TableModelEvent.UPDATE:
                              
                 column = source.getColumn();
                 row = source.getFirstRow();
                 idAccessorio = accessoryTable.getValueAt(row, 0).toString();
                 if (column == 1){
                     String []data = accessoryTable.getValueAt(accessoryTable.getSelectedRow(), accessoryTable.getSelectedColumn()).toString().split("/");
                     dataAcquisto = data[2] + "-" + data[1] + "-" + data[0];                     
                 }else
                     if (column == 2){
                         descrizione = accessoryTable.getValueAt(accessoryTable.getSelectedRow(), accessoryTable.getSelectedColumn()).toString();
                     }else
                         if (column == 3){
                             importo = accessoryTable.getValueAt(accessoryTable.getSelectedRow(), accessoryTable.getSelectedColumn()).toString();
                         }else
                             if (column == 4){
                                 tariffa = accessoryTable.getValueAt(accessoryTable.getSelectedRow(), accessoryTable.getSelectedColumn()).toString();
                             }else
                                 if (column == 5){
                                     String value = tabMod.getValueAt(row, column).toString();
                                     String []split = value.split(" - ");
                                     categoria = split[0];
                                 }
 break;
        }
    }
Vi risparmio le query al database perche non servono!
io credo che il problema sta nell'identificare l'evento, ovvero facendo un po di debug ho scoperto che l'applicazione si blocca quando clicco sulla combobox e scelgo un valore. Pensate che la combobox rimane bloccata con la tendina aperta e per sbloccare il pc devo killare il processo di java.
Come posso risolvere?
Grazie a tutti in anticipo