2012-06-19 27 views
7

Come compilare un JTable con i valori di un elenco con un tipo di oggetto. My Code si presenta così:Popolare JTable utilizzando l'elenco

String[] columnNames = {"CLASS CODE", 
     "TIME", 
     "DAY", 
     "ROOM", 
     "PROFESSOR"}; 

    List<org.mine.ScheduleAttr> schedule = getStudSched(studNo); 
    DefaultTableModel model = new DefaultTableModel(); 
    table.setModel(model); 

    model.setColumnIdentifiers(columnNames); 

Ho già le colonne, la lista sarebbe venuto dalla variabile programma? Come posso metterlo sul mio tavolo considerando queste colonne?

risposta

7

Dai uno sguardo allo DefaultTableModel. È possibile scorrere l'elenco e creare l'array Oggetto per ogni riga.

for (ScheduleAttr s : schedule) { 
    Object[] o = new Object[5]; 
    o[0] = s.getX(); 
    o[1] = s.getY(); 
    o[2] = s.getZ(); 
    o[3] = s.getA(); 
    o[4] = s.getB(); 
    model.addRow(o); 
} 
+0

Il DefaultTableModel collegamento è deprecato – Fred37b

4

Si potrebbe usare qualcosa di simile a (solo cambiando columns e values):

import java.awt.BorderLayout; 
import java.util.ArrayList; 
import java.util.List; 

import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 
import javax.swing.table.DefaultTableModel; 
import javax.swing.table.TableModel; 

public class TestJFrame extends JFrame { 
    private static final long serialVersionUID = 1L; 

    public static void main(String[] args) { 
     TestJFrame testJFrame = new TestJFrame(); 

     List<String> columns = new ArrayList<String>(); 
     List<String[]> values = new ArrayList<String[]>(); 

     columns.add("col1"); 
     columns.add("col2"); 
     columns.add("col3"); 

     for (int i = 0; i < 100; i++) { 
      values.add(new String[] {"val"+i+" col1","val"+i+" col2","val"+i+" col3"}); 
     } 

     TableModel tableModel = new DefaultTableModel(values.toArray(new Object[][] {}), columns.toArray()); 
     JTable table = new JTable(tableModel); 
     testJFrame.setLayout(new BorderLayout()); 
     testJFrame.add(new JScrollPane(table), BorderLayout.CENTER); 

     testJFrame.add(table.getTableHeader(), BorderLayout.NORTH); 

     testJFrame.setVisible(true); 
     testJFrame.setSize(200,200); 
    } 

} 

Il columns non ha bisogno di guardare come columns.toArray() perché avete già un array di oggetti, quindi è solo lo usano. Alla fine per utilizzare le colonne l'istruzione è simile a: TableModel tableModel = new DefaultTableModel(values.toArray(new Object[][] {}), columnNames);

0

provare questo

previamente ad un iteratore

Iterator itr = StringList.iterator(); 



while(itr.hasNext()) { 
       Object element = itr.next(); 
        int y=0; 
        for (y=0; y <=16 ; y++){ 
        table_4.setValueAt(element, y, 0); 

table_4 è il tuo nome della tabella quindi impostare la riga e la colonna in cui si desidera inserire la stringa