1

当按钮添加时, 我正在尝试将数据从 a 获取JTextField到 aJTable

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

    }
}

表:

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

但仍然没有添加数据。谢谢你。

4

4 回答 4

2

没有发生任何事情的原因是您更新了TableModel未在 any 上设置的a JTable

你用

JTable table = new JTable(data, columns);

构造表,而不是

JTable table = new JTable( model );
于 2012-10-15T16:18:59.720 回答
1

我没有测试你的代码,但是当你创建你的JTable(从你的 pastebin 链接读取)时,你使用以下行:

JTable table = new JTable(data, columns);

您应该指定您的模型而不是原始数据,对模型所做的修改将显示在您的表格中:

JTable table = new JTable (model);

于 2012-10-15T16:18:26.683 回答
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它应该可以正常工作......

于 2012-10-15T19:50:58.893 回答
0

当我查看您的代码时,您还没有使用要更新到表中的 TableModel。

如果您想通知您的 JTable 您的数据更改,请使用 tableModel.fireTableDataChanged()

请参考http://docs.oracle.com/javase/7/docs/api/javax/swing/table/AbstractTableModel.html#fireTableDataChanged%28%29

在这里更新,现在检查 http://pastebin.com/bb00PzjD

于 2012-10-15T16:34:06.200 回答