Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Discussione: Problema con jTable

  1. #1

    Problema con jTable

    ho creato una tabella con 5 colonne (che rispecchiano le colonne del database al quale devo connettermi) e 20 righe.
    il codice che ho usato per riempirla è:
    codice:
            try {
                int id = 0;
                Class.forName("com.mysql.jdbc.Driver");
                Connection conn = DriverManager.getConnection("jdbc:mysql://.....");
                Statement stmt = conn.createStatement();
                ResultSet rs = stmt.executeQuery("select * from movimenti");
                while (rs.next()) {
                    for (int i = 0; i < 20; i++) {
                        jTable1.setValueAt(rs.getString(i + 1), id, i);
                    }
    
                }
                rs.close();
                stmt.close();
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, e.getMessage());
            }
    ma mi da questo errore:
    Column index out of range,6>5.

    nn riesco a intrepretarlo perchè io sul db ho 5 colonne e nn 6.

  2. #2
    ho risolto un problema ma ne ho un altro:
    codice:
            try {
                Class.forName("com.mysql.jdbc.Driver");
                Connection conn = DriverManager.getConnection("jdbc:mysql://......");
                Statement stmt = conn.createStatement();
                ResultSet rs = stmt.executeQuery("select * from movimenti");
                int riga = 0;
                while (rs.next()) {
                    for (int i = 0; i < 5; i++) {
                        jTable1.setValueAt(rs.getString(i + 1), riga, i);
                    }
    
                }
                rs.close();
                stmt.close();
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, e.getMessage());
            }
    l'errore era nel ciclo for.
    ora ho messo il numero di colonne giuste.
    nn mi da errore ma mi fa vedere solo l'ultimo record.

  3. #3
    Non incrementi l'indice riga ad ogni ciclo del while
    Al mio segnale... scatenate l'inferno!

  4. #4
    ho provato a mettere rigga++ ma si vede tutto sballato e mi compare questo messaggio:
    30 >= 30

  5. #5
    Per creare ed inserire dati in una JTable, fai una cosa del genere:

    Codice PHP:
    DefaultTableModel model = new DefaultTableModel();
    JTable table = new JTable(model);

    model.addColumn("Col1");
    model.addColumn("Col2");

    // Aggiungi una riga al model della jtable
    model.addRow(new Object[]{"v1""v2"}); 
    Al mio segnale... scatenate l'inferno!

  6. #6
    ma io la tabella ce l'ho già, devo solo riempirla:
    codice:
    jTable1.setModel(new javax.swing.table.DefaultTableModel(
                new Object [][] {
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null}
                },
                new String [] {
                    "No.", "Entrate", "Uscite", "Data", "Causale"
                }
            ) {
                boolean[] canEdit = new boolean [] {
                    false, false, false, false, false
                };
    
                public boolean isCellEditable(int rowIndex, int columnIndex) {
                    return canEdit [columnIndex];
                }
            });

  7. #7
    aaaaahhh... cosa sono tutti queli null!?!!? Orrore!!!

    La tabella creala inizialmente vuota e via via aggiungi le righe quando serve.

    Codice PHP:
    jTable.setModel(new javax.swing.table.DefaultTableModel(
                new 
    Object [][] {},
                new 
    String [] {
                    
    "No.""Entrate""Uscite""Data""Causale"
                
    }
            ) {
                
    boolean[] canEdit = new boolean [] {
                    
    falsefalsefalsefalsefalse
                
    };

                public 
    boolean isCellEditable(int rowIndexint columnIndex) {
                    return 
    canEdit [columnIndex];
                }
            });
    ...

    try{
       for(
    int i=0i<numeroRigheDaAggiungerei++){
          
    Object[] nuovaRiga = {valore1valore2valore3valore 4valore5};
          ((
    DefaultTableModel)jTable.getModel()).addRow(nuovaRiga);
       }

       ((
    DefaultTableModel)jTable.getModel()).fireTableDataChanged();

    }catch(
    Exception ex){
       
    ex.printStackTrace();

    Al mio segnale... scatenate l'inferno!

  8. #8
    nn mi è chiara la parte del blocco try/catch:
    -io devo solo modificare il ciclo for il resto lo lascio giusto?
    -in numerorigadaaggiungere nn ci andrebbero il numero di colonne?
    -nell'array di Object che dovrei metterci?

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    ..mi intrufolo un momento..

    Il numero di colonne lo conosci a priori, quindi ti servono le righe.
    Il codice nel try/catch non fa altro che aggiungere N righe alla tua tabella:
    codice:
       for(int i=0; i<numeroRigheDaAggiungere; i++){
          Object[] nuovaRiga = {valore1, valore2, valore3, valore 4, valore5};
          ((DefaultTableModel)jTable.getModel()).addRow(nuovaRiga);
       }
    Se passi 5 in numeroRigheDaAggiungere, questi (ovvimente..) va a ciclare 5 volte, e per 5 volte aggiungerà una nuova riga (se la vuoi vuota è sufficiente al posto di valore utilizzare "").

  10. #10
    ma sto blocco try/catch dove lo dovrei mettere?
    al posto di quello che usavo io per riempirlo o in più?

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.