Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di Jamir
    Registrato dal
    Jul 2008
    Messaggi
    38

    Inserire una query in Jtable [Java]

    Ciao ragazzi, sono abbastanza nuovo nell'utilizzo di Java e sto riscontrando grossi problemi nell'inserimento di una query fatta su un database mysql in una JTable, tramite vari siti e forum sono riuscito a racimolare questo codice che purtroppo non mi da ancora soddisfazioni
    Attualmente in esecuzione quando clicco sul menuItem descritto sotto appare un jFrame da me richiamato senza la tabella, secondo voi quale può essere l'errore? In più vorrei sapere se nel codice ci sono errori che non mi possono permettere di visualizzare correttamente la jTable...


    codice:
    private void jMenuTabellaClientiActionPerformed(java.awt.event.ActionEvent evt) {                                                    
            try {
                DatabaseOperation operation = new DatabaseOperation();
                List<TupleData> dati = operation.getTransazionidouble("Clienti");
                            //Schema tabella
                TableSchema colonne = new TableSchema("Clienti");
               
                String headers[] = {
                    "id_cliente",
                    "nome",
                    "cognome",
                    "Sesso",
                    "Data di nascita"
                    
                
            };
                
              /*  for(int i=0;i< colonne.getNumberOfAttributes();i++)
                {
                    headers[i] = colonne.getColumn(i).getColumnName();
                }*/
                
                int i = 0;
                Object[][] data = new Object[dati.size()][headers.length];
                for(Iterator<TupleData> it=dati.iterator();it.hasNext();){
                    TupleData tmp=it.next();
        for(int j=0;j<tmp.tuple.size();j++){
           
            data[i][j]=tmp.tuple.get(j);
        }
        i++;
    }
    //Setto dati e intestazioni della tabella
                JTable myJTable = new JTable();
    myJTable.setModel(new javax.swing.table.DefaultTableModel(data, headers){
        @Override public boolean isCellEditable(int rowIndex, int mColIndex) {
            return false; }});
                
                jFrameVistaTabelle.add(myJTable);
                    
                 jFrameVistaTabelle.show();
            } catch (SQLException ex) {
                Logger.getLogger(Interfaccia.class.getName()).log(Level.SEVERE, null, ex);
            }
    
    }
    Grazie per l'attenzione.
    Ci sono 10 tipi di persone … Quelli che capiscono il codice binario e quelli che non lo capiscono

  2. #2
    Utente di HTML.it L'avatar di Jamir
    Registrato dal
    Jul 2008
    Messaggi
    38
    Sto cercando altre soluzioni... Riformulo il quesito, ho un database e devo inserire i dati di una tabella in una jTable creata tramite editor grafico di netbeans. Il riempimento della tabella viene effettuato da un menuItem il cui codice è il seguente:

    codice:
    private void jMenuTabellaClientiActionPerformed(java.awt.event.ActionEvent evt) {                                                    
            try {
                DatabaseOperation operation = new DatabaseOperation();
                List<TupleData> dati = operation.getTransazionidouble("Clienti");
                            //Schema tabella
                TableSchema colonne = new TableSchema("Clienti");
               
            
                
              /*  for(int i=0;i< colonne.getNumberOfAttributes();i++)
                {
                    headers[i] = colonne.getColumn(i).getColumnName();
                }*/
                
                int i = 0;
                Object[][] data = new Object[dati.size()][colonne.getNumberOfAttributes()];
                for(Iterator<TupleData> it=dati.iterator();it.hasNext();){
        
                   TupleData tmp=it.next();
    
        for(int j=0;j<tmp.tuple.size();j++){
           
            data[i][j]=tmp.tuple.get(j);
           
        }
        
        i++;
        
        
    }
       
    //Fine trasformazione dati da lista a object[][]
    
         String[] headers ={
                "id_cliente",
                "nome",
                "cognome",
                "sesso",
                "data di nascita"
            }    ;
                
                
                
                jTable1 = new JTable(data,headers);
    
    for(int k = 0;k<dati.size();k++){
        for(int h=0;h<colonne.getNumberOfAttributes();h++){
            jTable1.setValueAt(data[k][h], k, h);
        }
         jFrameVistaTabelle.validate();
        jFrameVistaTabelle.repaint();
        jFrameVistaTabelle.doLayout();
        
                }         
            } catch (SQLException ex) {
                Logger.getLogger(Interfaccia.class.getName()).log(Level.SEVERE, null, ex);
            }
     jFrameVistaTabelle.show();
    
    
    }

    Quando eseguo mi fa vedere la tabella non popolata ... Qual'è l'errore?
    Ho anche visto da qui ma niente :
    http://forum.html.it/forum/showthread/t-1215788.html

    Fatemi sapere, grazie
    Ci sono 10 tipi di persone … Quelli che capiscono il codice binario e quelli che non lo capiscono

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Per inserire gli elementi nella tabella devi utilizzare il TableModel.
    Se non ti serve nulla di particolare puoi anche utilizzare quello di default; DefaultTableModel
    codice:
    DefaultTableModel tm = new DefaultTableModel();
    JTable table = new JTable(tm);
    
    // Aggiunta riga
    Vector<String> row = new Vector<String>();
    row.add(cella1); // Ovviamente passerai stringhe
    row.add(cella2); // queste sono le colonne
    row.add(cella3);
    
    tm.addRow(row);
    Ricordati di aggiungere anche le colonne (operazione che deve essere svolta prima dell'aggiunta delle righe), tramite tm.addColumn(Object columnName); ci sono anche altri costruttori, li trovi nell'API su DefaultTableModel.
    La modifica di un valore avverrà in maniera analoga, ma richiamando setValueAt() sull'istanza del table model.

    Spero di essere stato chiaro, altrimenti chiedi

  4. #4
    Utente di HTML.it L'avatar di Jamir
    Registrato dal
    Jul 2008
    Messaggi
    38
    ok fino al tableModel ci sono ma io vorrei inserire i miei dati presenti in una struttura di tipo Object[][], in un table già presente, chiamata jTable1.

    Tu mi stai parlando se non ho capito male della creazione ex novo di una nuova tabella, se io decidessi di procedere con questo approccio come faccio a visualizzare la tabella in un jscrollpane e quindi in un jframe?
    E in più l'aggiunta delle righe va fatta prima di associare il tablemodel alla tabella?
    Ci sono 10 tipi di persone … Quelli che capiscono il codice binario e quelli che non lo capiscono

  5. #5
    Utente di HTML.it L'avatar di Jamir
    Registrato dal
    Jul 2008
    Messaggi
    38
    Ora la parte dopo la trasformazione della lista in Object è così, rimane il problema della visualizzazione, cioè visualizza la jScrollPane senza tabella all'interno... perché?

    codice:
                DefaultTableModel tm = new DefaultTableModel();
                
                for(int k=0;k<colonne.getNumberOfAttributes();k++)
                    tm.addColumn(headers[k]);
                
                for(int h = 0; h < dati.size();h++)
                    tm.addRow(data[h]);
                
                JTable tableClienti = new JTable(tm);
               
     
        jScrollViste.add(tableClienti);
                         
            } catch (SQLException ex) {
                Logger.getLogger(Interfaccia.class.getName()).log(Level.SEVERE, null, ex);
            }
     jFrameVistaTabelle.show();
    Ci sono 10 tipi di persone … Quelli che capiscono il codice binario e quelli che non lo capiscono

  6. #6
    Utente di HTML.it L'avatar di Jamir
    Registrato dal
    Jul 2008
    Messaggi
    38
    Come si dice dalle mie parti, dopo ore di "gastame" ci sono riuscito!!!

    per visualizzare la tabella nel jScrollPane dovevo utilizzare questa riga di codice :

    jScrollViste.setViewportView(tableClienti);

    Grazie mille a Patrick Jane, senza il tuo aiuto non ci sarei mai riuscito!!
    Ci sono 10 tipi di persone … Quelli che capiscono il codice binario e quelli che non lo capiscono

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Teoricamente basterebbe aggiungere la JTable al JPanel e successivamente al JFrame.

    Bene, felice di essere stato d'aiuto

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.