Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158

    Argomento Jtable di un metodo

    Buon giorno

    Ho bisogno di aiuto vorrei realizzare nella mia applicazione una classe servizi dove ogni volta che ne ho bisogno posso attingere ai suoi metodi.

    Il primo metodo che avevo in mente è la somma di una colonna di una JTable,Il mio problema che non riesco a capire se è possibile, passare gli argomenti del metodo sottoforma di oggetti


    esempio il metodo potrebbe chiamarsi :


    somma_colonna_jtable(nome_tabella,colonna1);



    codice:
    Double somma = 0.0;
          
        for(int i = 0; i < tabella.getRowCount(); i++){
            somma=somma+Double.parseDouble(tabella_busta.getValueAt(i,2).toString());
        }
         
            txt_somma.setText((String.valueOf(somma)));
                
            }catch(Exception  e){
                 JOptionPane.showMessageDialog(null,e);
        
        
        }

    non vi arrabbiate vi ricordo che sono un novizio e autodidatta e lo faccio solo per passione.

    Grazie a tutti in anticipo

  2. #2
    Mica ci arrabbiamo a comando

    Certo che si può fare e il metodo è corretto.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    ho fatto cosi ma ricevo un java.lang.NullpoiterException



    codice:
    public void somma_Colonna_tabella(javax.swing.JTable tabella,int colonna,javax.swing.JTextField text_field){
       
          
            
        Double somma = 0.0;
          
    
        for(int i = 0; i < tabella.getRowCount(); i++){
            somma=somma+Double.parseDouble(tabella.getValueAt(i,colonna).toString());
        }
         //System.out.println("somma = "+somma);
            text_field.setText((String.valueOf(somma)));
                
           
        
        }

  4. #4
    posta tutto l'errore (lo stacktrace)...magari il problema potrebbe trovarsi a monte
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Nio74
    ho fatto cosi ma ricevo un java.lang.NullpoiterException
    Il concetto che stai applicando, grosso modo, è corretto.
    Ma devi tenere presente un paio di cose:

    a) Non so quale table model hai usato, se ne hai implementato uno tuo specifico (in genere si estende AbstractTableModel) o se hai usato DefaultTableModel o addirittura se hai usato implicitamente il table model di JTable quando usi uno dei suoi costruttori che ricevono tutti i dati.
    Se tu avessi implementato un tuo table model, quello sarebbe il punto più appropriato per fare questa logica.

    b) se una cella non è mai stata editata (parlo perlomeno di DefaultTableModel), il suo valore è null, quindi dovresti testarlo, altrimenti è chiaro che puoi avere un NullPointerException.

    c) JTable offre "di serie" (a meno che lo disabiliti tu programmaticamente) la possibilità di trascinare le colonne per cambiare il loro ordine. Se "parli" direttamente col JTable, l'indice delle colonne è quello fisico, visuale e potrebbe non essere appropriato se l'utente sposta le colonne!
    Soluzione: o invochi il getValueAt del table model (dove le colonne sono "stabili") oppure
    EDIT: se usi getValueAt di JTable trasli l'indice di colonna da model a view con il metodo convertColumnIndexToView di JTable.

    d) per la variabile somma, non usare Double (wrapper) ma double (primitivo). Ad ogni somma viene fatto un unboxing e poi boxing del valore.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    Colpa mia non avevo inizializzato la classe

    Servizi sv = null;

    volevo far si che fosse in standby ma ho visto che devo per forza richiamarla
    con
    codice:
    Servizi sv = new Servizi();
    è corretto inizializzare cosi la mia classe servizi nella dichiarazioni iniziali oppure è meglio richiamarla solo ogni qual volta ce ne sia il bisogno (es Action performed di un button )


    codice:
     private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            
            try{
             String val1 =  ((JTextField)data_da.getDateEditor().getUiComponent()).getText();
     
              
              String val2 =   ((JTextField)data_a.getDateEditor().getUiComponent()).getText();
    
             
                    
    String sql = "SELECT * FROM Buste where data between '"+val1+"' and '"+val2+"'";
    pst=conn.prepareStatement(sql);
    rs= pst.executeQuery();
    tabella_busta.setModel(DbUtils.resultSetToTableModel(rs));
    
    Servizi sv = new Servizi();
    sv.somma_Colonna_tabella(tabella_busta, 2, txt_media);
    
    
        
    
            }catch(Exception  e){
                 JOptionPane.showMessageDialog(null,e);
                 
            
            }
            
            
        }

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.