Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [java] recuperare dati da combobox in jtable

    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

  2. #2
    nessuno ha qualche idea?

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    ahahah sei incappato nel debug sulla combobox!!!!!!
    In pratica come hai visto si blocca e devi killare i processi java.
    guarda qui
    RTFM Read That F*** Manual!!!

  4. #4
    Ciao e grazie per la dritta... un bug sulle combobox? E perche oracle non dice come risolvere questa cosa in qualche tutorial... vanne proverò questa soluzione nel fine settimana e vi faccio sapere

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.