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);
Author by
Arjel
Updated on August 06, 2022Comments
-
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 over 7 yearsThe link DefaultTableModel is deprecated