2012-06-19 9 views
7

Wie werde ich bevölkere eine JTable mit Werten aus einer Liste mit einem Objekttyp. Mein Code sieht wie folgt aus:Populate JTable Arbeiten mit der Anwendung

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); 

ich bereits die Spalten haben, die Liste würde kommen aus dem Zeitplan variabel? Wie kann ich das unter Berücksichtigung dieser Spalten auf meinen Tisch legen?

Antwort

7

Werfen Sie einen Blick auf DefaultTableModel. Sie können über Ihre Liste iterieren und das Objekt-Array für jede Zeile erstellen.

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

Der Link DefaultTableModel ist veraltet – Fred37b

4

Sie könnten etwas ähnliches verwenden (nur columns und values Wechsel):

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); 
    } 

} 

Die columns muss nicht wie columns.toArray() schauen, weil Sie bereits eine Reihe von Objekten, so ist es einfach zu verwenden. Am Ende, um Ihre Spalten zu verwenden, sieht die Anweisung aus wie folgt: TableModel tableModel = new DefaultTableModel(values.toArray(new Object[][] {}), columnNames);

0

versuchen diese

zuerst ein Iterator machen

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); 

TABELLE_4 ist Ihr Tabellenname dann die Zeile und Spalte, wo Sie die Zeichenfolge eingefügt werden soll