2012-06-19 15 views
7

Jak wypełnić JTable wartościami z listy o typie obiektu. mój kod wygląda następująco:Wypełnianie JTable przy użyciu listy

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

już mam kolumny, lista będzie pochodzić ze zmiennej harmonogramu? Jak mogę umieścić to w moim stole, biorąc pod uwagę te kolumny?

Odpowiedz

7

Spójrz na DefaultTableModel. Możesz powtórzyć swoją listę i utworzyć tablicę obiektów dla każdego wiersza.

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

Link DefaultTableModel jest nieaktualna – Fred37b

4

Można użyć coś podobnego do (tylko zmiana columns i 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); 
    } 

} 

columns nie musi wyglądać columns.toArray() ponieważ masz już tablicę obiektów, więc jest po prostu użyj go. Na końcu, aby użyć twoich kolumn, instrukcja wygląda następująco: TableModel tableModel = new DefaultTableModel(values.toArray(new Object[][] {}), columnNames);

0

spróbować

najpierw dokonać iterator

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 to nazwa tabeli następnie ustawić wiersza i kolumny, w którym chcesz wstawić ciąg

Powiązane problemy