Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    67

    leggere valori da una JTable

    Buongiorno a tutti, ho un piccolo problema, ho inserito i valori di una query in una jtable, che possono essere modificati per poi essere risalvati.
    Ora non riesco a leggere i valori della jtable. in codicce è questo:
    codice:
    public void salvaTabella()
            {
            try
                {    
                String[][] cella = new String[5][3];
                cella[0][0] = tabella.getValueAt(0,0).toString();
                commento.setText("C:"+cella[0][0]);
                }
            catch(Exception e)
                {
                commento.setText("C:"+e);
                }
             }
    Cerco di visualizzarlo nella JLabel, solo per vedere cosa legge.

    come errore mi da: java.lang.NullPointException

    Grazie in anticipo a chi vorra aiutarmi.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: leggere valori da una JTable

    Originariamente inviato da tax971
    come errore mi da: java.lang.NullPointException
    Nella cella della tabella ci potrebbe essere un null. Quindi getValueAt() può ritornare null. E in tal caso invocare toString() su un null ovviamente lancia NullPointerException. Almeno fai un test prima di invocare toString().
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    67
    Hai ragione, però la tabella la ho visibile su un jpanel è vedo che non è nullo

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da tax971
    Hai ragione, però la tabella la ho visibile su un jpanel è vedo che non è nullo
    ??
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    67
    ?? cosa?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da tax971
    Hai ragione, però la tabella la ho visibile su un jpanel è vedo che non è nullo
    Ma che la tabella è visibile non centra nulla ..... io sto parlando della cella ... contiene qualcosa??? I "renderer" di default, se il valore è null, visualizzano generalmente una cella "vuota".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    67
    Allora, chiariamoci, io eseguo una query, inserisco i valori nella tabella, e visualizzo la tabella su un jpanel, e la posizione [0][0], non è vuota, ma c'è un valore.
    Poi premo il pulsante che chiama il metodo che legge tabella[0][0], quindi il valore [0][0] comunque dovrebbe esserci quel valore che leggo...
    ...o non ho tenuto conto di qualcosa???

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    67
    ...questa è tutta la classe

    codice:
    class valoriTabella extends JPanel implements ActionListener
        {
        public Connection con;
        public Statement st;
        public int results;
        public String upd, piro, v1matr;
        public JTable tabella;
        private JCambioNCoils pjp;
        public JButton salva;
        public JLabel commento, testata;
        public String[][] Squal;
        
        public valoriTabella(JCambioNCoils pjp)
            {     
            this.pjp = pjp;
            int i,i1;  
            v1matr = pjp.vmatr;
            commento = new JLabel("Cambia il N. di Coils e salva");
            testata = new JLabel("Matricola            Diametro           Spessore            Qualità");
            salva = new JButton(" Salva ");
            salva.setBounds(200,140,80,20);
            commento.setBounds(10,150,350,20);
            testata.setBounds(10,20,350,20);
            add(commento);
            add(testata);
            add(salva);
            try
    	    {
    	    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    	    con = DriverManager.getConnection("jdbc:odbc:Coils");
    	    st = con.createStatement();
                upd = "SELECT * FROM Coils1 WHERE fmatr = '"+ v1matr +"';";
    	    ResultSet results = st.executeQuery(upd);
    	    i=0;
    	    String[] colHeads = {"Matricola","Diametro","Spessore","Qualità"};
    	    Squal = new String[5][4];
    	    Squal[0][0]="";
    	    Squal[1][0]="";	    
    	    Squal[2][0]="";
    	    Squal[3][0]="";
    	    Squal[4][0]="";
    	    Squal[0][1]="";
                Squal[1][1]="";	    
    	    Squal[2][1]="";
    	    Squal[3][1]="";
    	    Squal[4][1]="";
    	    Squal[0][2]="";
    	    Squal[1][2]="";	    
    	    Squal[2][2]="";
    	    Squal[3][2]="";
    	    Squal[4][2]="";
    	    Squal[0][3]="";
    	    Squal[1][3]="";	    
    	    Squal[2][3]="";
    	    Squal[3][3]="";
    	    Squal[4][3]="";
                while (results.next())
                    {
    		Squal[i][0] =results.getString("fmatr");
    		Squal[i][1] =results.getString("fdiam");
    		Squal[i][2] =results.getString("fspess");
    		Squal[i][3] =results.getString("fqua");
    	        i++;
    	        }
    	     i=1;  
    	     Object[][] data =
    	         {
    	            {Squal[0][0],Squal[0][1],Squal[0][2],Squal[0][3]},	             
    	            {Squal[1][0],Squal[1][1],Squal[1][2],Squal[1][3]},
    	            {Squal[2][0],Squal[2][1],Squal[2][2],Squal[2][3]},
    	            {Squal[3][0],Squal[3][1],Squal[3][2],Squal[3][3]},
    	            {Squal[4][0],Squal[4][1],Squal[4][2],Squal[4][3]}
                     };
                  JTable tabella = new JTable(data,colHeads);    
                  tabella.setBounds(10,40,350,80);
                  add(tabella);	
                }
            catch(Exception e)
                {
                
                }
           salva.addActionListener(this); 
           }   
            
      public void actionPerformed(ActionEvent evento)
    	{  
    	Object s3 = evento.getSource();
    	if (s3==salva)
    	    {
    	     salvaTabella();
                }
            }   
        
      public void salvaTabella()
            {
            try
                {
                String[][] cella = new String[5][3];
                cella[0][0] = tabella.getValueAt(0,0).toString();
                commento.setText("C:"+cella[0][0]);
                }
            catch(Exception e)
                {
                commento.setText("C:"+e);
                }
             }
        }
    
    class valoriTabella1 extends JFrame                                  
        {                                                                    
        public valoriTabella1(int xLoc,int yLoc, JCambioNCoils jcn)                          
            {                                                                
            setSize(400,200);                                                
            setTitle("Certificati S.I.M. s.r.l.   by Antonio Pompilii");    
            setResizable(false);                                            
            setLocation(xLoc,yLoc);                                           
            valoriTabella valoriTabella2 = new valoriTabella( jcn );
            Container contentPane = getContentPane();     
            valoriTabella2.setLayout(null);
            contentPane.add(valoriTabella2);                           
            }
        }

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da tax971
    ...questa è tutta la classe
    E con tutto il codice finalmente l'arcano è stato svelato .....

    Hai una variabile di istanza 'tabella'. Ma nel costruttore hai dichiarato una variabile locale!!!

    codice:
    JTable tabella = new JTable(data,colHeads);
    Quindi non stai assegnando il reference al campo di istanza!! E questo vuol dire che in salvaTabella() il campo 'tabella' è ancora null ed è questo che causa ovviamente il NullPointerException.

    Effettivamente non era un problema del valore della cella .... ma senza il codice completo nessuno poteva saperlo ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    67
    intanto grazie per le risposte, ma io ho dichiarato public la tabella all'inizio,

    public JTable tabella;

    non è la stessa cosa?

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.