当按钮添加时,我正在尝试将数据从JTextField
提取到JTable
ActionListener
:
public void actionPerformed(ActionEvent evt) {
Object src = evt.getSource();
if (src == AddBtn) {
System.out.println("HELLOO");
String nextRowId = Integer.toString(model.getRowCount());
model.addRow(new Object[] { nextRowId, LatText.getText(),
LongText.getText(), EvlText.getText() });
} else if (src == NextBtn) {
} else if (src == perviousBtn) {
}
}
JTable:
String columns[] = { "ID", "Name", "Age", "Gender" };
Object data[][] = { { "0", "Tom", new Integer(20), "Male" },
{ "1", "Tina", new Integer(18), "Female" },
{ "2", "Raj", new Integer(19), "Male" },
{ "3", "Tina", new Integer(18), "Female" },
{ "4", "Raj", new Integer(19), "Male" },
{ "5", "Tina", new Integer(18), "Female" }
};
DefaultTableModel model = new DefaultTableModel(data, columns);
完整代码:http://pastebin.com/9R9QyXdw?
单击“添加”时没有任何反应。
修改
我已经纠正了这个:
JTable dataTable = new JTable(model);
但仍然没有添加数据。 谢谢。
答案 0 :(得分:2)
没有任何反应的原因是您更新了未在TableModel
上设置的JTable
。
您使用
JTable table = new JTable(data, columns);
构造表,而不是
JTable table = new JTable( model );
答案 1 :(得分:1)
我没有测试过您的代码,但是当您创建JTable
时(从您的pastebin链接中读取),您可以使用以下行:
JTable table = new JTable(data, columns);
您应该指定模型而不是原始数据,对模型所做的修改将显示在您的表格中:
JTable table = new JTable (model);
答案 2 :(得分:1)
代码存在两个问题。
第一个已经被指出JTable table = new JTable(data, columns)
基本上是构建它自己的模型,所以当你尝试在动作监听器中添加你的模型时,它与表所使用的模型不同。
另一种是你宣布模特两次。
您将模型声明为类全局字段DefaultTableModel model = new DefaultTableModel(data, columns)
,然后在addComponents
方法中再次声明它...
public void addComponentsToPane(final Container pane) {
DefaultTableModel model = new DefaultTableModel(data, columns);
因此,即使您将表格声明为JTable table = new JTable(model)
,它仍会使用错误的模型..
按照描述更改表的声明,并删除DefaultTableModel
方法中addComponentsToPane
模型的声明,它应该可以正常工作......
答案 3 :(得分:0)
当我查看您的代码时,您还没有使用要更新到表中的TableModel。
如果您想通知您的JTable有关数据的更改,请使用 tableModel.fireTableDataChanged()
在此处更新,立即查看 http://pastebin.com/bb00PzjD