Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    655

    [JAVA] Problema con JTable

    Honcreato una classe che è il Table Model:
    codice:
    import javax.swing.table.*;
    import java.util.*;
    
    public class Modello extends AbstractTableModel
    {
    	String [] string ={"Nome","Cognome","Altro"};
    	Vector vett = new Vector();
    
     public Modello()
     { 
     vett.addElement("ciao");
     vett.addElement("prova");
     
    	
     }
     public Object getValueAt(int rows,int cols)
     {
    	return vett.get(0);
     }
    
     public int getColumnCount()
     {
     	return 3;
     }
    
     public String getColumnName(int col)
      {
        return string[1];
       }
       
     public int getRowCount()
     {
        return 	2;
     }
    
    }
    E un'altra che rappresenta la tabella:
    codice:
    import javax.swing.*;
    
    public class Tabella extends JFrame
    {
     private JTable tabella;
     private JPanel panel= new JPanel();	
    
     public Tabella()
     {
     	Modello modello = new Modello();
     	tabella= new JTable(modello);
     	panel.add(tabella);
     	setContentPane(panel);
     	setSize(200,200);
     	setVisible(true);
     }
     public static void main(String arg[])
     {
     	Tabella tab = new Tabella();
     }
    }
    Il mio problema è che non riesco ad ottenere il primo elemento del Vector nella prima cella e cosi via.

    P.S. Ho già visto il tutorial Sun

    Ciao

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Direi che un Vector può andare bene per contenere i valori della tabella, ma deve essere strutturato in modo corretto: nel Vector ci dovrebbero essere degli array di Object e non dei semplici oggetti. In questo modo ciascun elemento del Vector rappresenterebbe una riga della tabella.

    A questo punto, nel TableModel:
    codice:
    public Object getValueAt(int rows,int cols) {
       Object [] riga = (Object[]) vett.elementAt( rows );
       return riga[cols];
    }
    In questo modo vado a reperire nel Vector la riga desiderata e, dall'array corrispondente, la colonna che mi serve.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    655
    Originariamente inviato da LeleFT
    Direi che un Vector può andare bene per contenere i valori della tabella, ma deve essere strutturato in modo corretto: nel Vector ci dovrebbero essere degli array di Object e non dei semplici oggetti. In questo modo ciascun elemento del Vector rappresenterebbe una riga della tabella.

    A questo punto, nel TableModel:
    codice:
    public Object getValueAt(int rows,int cols) {
       Object [] riga = (Object[]) vett.elementAt( rows );
       return riga[cols];
    }
    In questo modo vado a reperire nel Vector la riga desiderata e, dall'array corrispondente, la colonna che mi serve.


    Ciao.
    Ma poi la matrice che va a comporre la JTable la devo creare andando a mettere gli elementi cella per cella, nel senso:
    Il mio Vector è formato da un array di String se vado a selezionare la prima cella del vector otterrei il vettore di stringhe che ha nome in prima cella, cognome in seconda e data in terza cella, ora per ottenere nome nella prima cella della JTable, cognome nella seconda e data nella terza e poi a seguire le altre righe come devo fare?
    Allego un po di codeice:

    codice:
    public Object getValueAt(int rows,int cols)
     {
    vett=(db.eseguiQuery("Select nome,cognome,data FROM" +
    		     " anagrafica INNER JOIN diagramma on" +
    			" anagrafica.id=diagramma.idPaziente"));
    	        
    			String[] v=(String[])vett.get(0);
    					
    		return  v[0];
    	}
    L'output che ottengo cosi è il solo nome per tutte le celle

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Non capisco dove sia il problema... se devi popolare la tabella è ovvio che te lo devi fare a mano, elemento per elemento: il programma non si può mica inventare gli elementi che ci vuoi tu.

    Per creare la matrice puoi seguire la sintassi degli array:
    codice:
    String [][] string ={
                           {"Nome1","Cognome1","Altro1"}
                           {"Nome2","Cognome2","Altro2"}
                           {"Nome3","Cognome3","Altro3"}
                           ...
                        };
    O forse non ho capito io qual è il tuo problema...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.