Populate JTable Using List

41,183

Solution 1

Take a look at DefaultTableModel. You could iterate over your List and create the Object array for each row.

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

Solution 2

You could use something similar to (just changing columns and 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);
    }

}

The columns doesn't need to look like columns.toArray() because you already have an array of objects, so is just use it. At the end in order to use your columns the instruction looks like: TableModel tableModel = new DefaultTableModel(values.toArray(new Object[][] {}), columnNames);

Share:
41,183
Arjel
Author by

Arjel

Updated on August 06, 2022

Comments

  • Arjel
    Arjel almost 2 years

    How will I populate a JTable with values from a List with an Object Type. My Code looks like this :

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

    I already have the columns, the list would come from the schedule variable ? How can I put that to my table considering these columns ?

  • Fred37b
    Fred37b over 7 years
    The link DefaultTableModel is deprecated