2012-06-19 26 views
7

Làm cách nào để điền một JTable với các giá trị từ một Danh sách có Kiểu Đối tượng. Mã của tôi trông giống như sau:Điền JTable Sử dụng Danh sách

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

Tôi đã có các cột, danh sách sẽ đến từ biến lịch biểu? Làm thế nào tôi có thể đặt nó vào bảng của tôi xem xét các cột này?

Trả lời

7

Hãy xem DefaultTableModel. Bạn có thể lặp qua Danh sách của bạn và tạo mảng Đối tượng cho mỗi hàng.

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

Liên kết DefaultTableModel bị phản đối – Fred37b

4

Bạn có thể sử dụng một cái gì đó tương tự như (chỉ cần thay đổi columnsvalues):

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

} 

Các columns không cần phải trông giống như columns.toArray() vì bạn đã có một mảng của các đối tượng, vì vậy chỉ cần được sử dụng nó. Cuối cùng để sử dụng các cột của bạn, hướng dẫn sẽ như sau: TableModel tableModel = new DefaultTableModel(values.toArray(new Object[][] {}), columnNames);

0

thử này

đầu tiên tạo ra một 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 là tên bảng của bạn sau đó thiết lập các hàng và cột mà bạn muốn chèn chuỗi

Các vấn đề liên quan