2014-03-13 13 views
7

Ich mag die Zeile dynamisch in JTable hinzuzufügen, und ich habe den folgenden Code für das writen:Wie Zeile dynamisch in JTable hinzufügen

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

Das Problem ist, dass nur die letzte Zeile hinzugefügt wird, das heißt Druckzähldaten der Wert 10 in der ersten Spalte ,, kann jemand erklären, wie man das Problem löst?

Antwort

3

Ich habe eine Lösung auch für diese gefunden und es läuft erfolgreich

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

In Ihrer Schleife setzen Sie immer einen neuen TableModel zu JTabel. Stattdessen müssen Sie eine Instanz des Modells erstellen und dann Zeilen hinzufügen. nächste Code:

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

Statt:

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

    }     
+0

immer Ihre Syntax einfach halten es hilft, zu debuggen und eine gute Praxis –

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