我想在JTable中动态添加行,并为此编写了以下代码:
tblTaskList = new JTable();
tblTaskList.setShowVerticalLines(false);
tblTaskList.setCellSelectionEnabled(true);
tblTaskList.setColumnSelectionAllowed(true);
tblTaskList.setBorder(new LineBorder(null));
for (int count = 1; count <= 10; count++) {
tblTaskList.setModel(new DefaultTableModel(new Object[][] { {
count, "title1", "start", "stop", "pause", "status" }, },
new String[] { "status", "Task Title", "Start", "Stop",
"Pause", "Status" }));
}
tblTaskList.getColumnModel().getColumn(0).setPreferredWidth(31);
tblTaskList.getColumnModel().getColumn(1).setPreferredWidth(346);
tblTaskList.getColumnModel().getColumn(2).setPreferredWidth(33);
tblTaskList.getColumnModel().getColumn(3).setPreferredWidth(31);
tblTaskList.getColumnModel().getColumn(4).setPreferredWidth(28);
tblTaskList.setBounds(93, 34, 614, 160);
frmTaskList.getContentPane().add(tblTaskList);
问题是只添加了最后一行,即计数打印第一列中的值10,任何人都可以解释如何解决问题吗?
答案 0 :(得分:26)
// create object of table and table model
JTable tbl = new JTable();
DefaultTableModel dtm = new DefaultTableModel(0, 0);
// add header of the table
String header[] = new String[] { "Prority", "Task Title", "Start",
"Pause", "Stop", "Statulses" };
// add header in table model
dtm.setColumnIdentifiers(header);
//set model into the table object
tbl.setModel(dtm);
// add row dynamically into the table
for (int count = 1; count <= 30; count++) {
dtm.addRow(new Object[] { "data", "data", "data",
"data", "data", "data" });
}
答案 1 :(得分:9)
在循环中,您始终将新TableModel
设置为JTabel
。而不是你需要创建一个模型实例,然后添加行。使用下一个代码:
DefaultTableModel model = new DefaultTableModel(new String[] { "status", "Task Title", "Start", "Stop", "Pause", "Status" },0);
tblTaskList.setModel(model);
for (int count = 1; count <= 10; count++) {
model.addRow(new Object[]{ count, "title1", "start", "stop", "pause", "status" });
}
而不是:
for (int count = 1; count <= 10; count++) {
tblTaskList.setModel(new DefaultTableModel(new Object[][] { {
count, "title1", "start", "stop", "pause", "status" }, },
new String[] { "status", "Task Title", "Start", "Stop",
"Pause", "Status" }));
}
答案 2 :(得分:4)
我也找到了一个解决方案,它成功运行
DefaultTableModel dm = new DefaultTableModel(0, 0);
String header[] = new String[] { "Status", "Task Title", "Start",
"Pause", "Stop", "Statulses" };
dm.setColumnIdentifiers(header);
tblTaskList.setModel(dm);
for (int count = 1; count <= 10; count++) {
Vector<Object> data = new Vector<Object>();
data.add(count);
data.add("Project Title" + count);
data.add("Start");
data.add("Stop");
data.add("Pause");
data.add("Status");
System.out.println("test :- " + count);
dm.addRow(data);
}
答案 3 :(得分:3)
DefaultTableModel model ;
/** Creates new form DynRowAdd */
public DynRowAdd() {
initComponents();
model = new DefaultTableModel();
jTable1.setModel(model);
model.addColumn("Id");
model.addColumn("First Name");
model.addColumn("Last Name");
model.addColumn("Company Name");
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
model.addRow(new Object[]{jTextField1.getText(), jTextField2.getText(),jTextField3.getText(),jTextField4.getText()});
}