Java 如何在JTable中动态添加行
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/22371720/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to add row dynamically in JTable
提问by Uday A. Navapara
I want to add the row dynamically in JTable and I have writen the following code for that:
我想在 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);
The problem is that only the last row is added, i.e. count print the value 10 in first column,,,can anyone explain how to solve the problem?
问题是只添加了最后一行,即 count 打印第一列中的值 10,,谁能解释一下如何解决这个问题?
采纳答案by Uday A. Navapara
i Have also found one solution for this and it runs successfully
我也为此找到了一个解决方案并且它运行成功
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);
}
回答by alex2410
In your loop you always set a new TableModel
to JTabel
. Instead of that you need to create one instance of model, and then add rows to that. Use next code :
在您的循环中,您总是将 new 设置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" });
}
Instead of:
代替:
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" }));
}
回答by Arjun Chaudhary
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()});
}
回答by Uday A. Navapara
// 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" });
}