如何在JTable中动态添加行

我想在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,任何人都可以解释如何解决问题?

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

在循环中,您始终将新的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" })); } 

我也找到了一个解决方案,它运行成功

  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 data = new Vector(); 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); } 
  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()}); }