单击按钮时更新JTable

时间:2011-03-09 06:34:14

标签: java swing jtable

在我的应用程序中,我添加了一个JTabel并使用setCellRender方法,我按如下方式向表中添加一个按钮列。

    jTable1 = new JTable();
    String[] columnNames = {"Module", "Status", "Connectivity", "Action", "Start Time", "Logs"};
    data = getServerExecutions();
    model = new DefaultTableModel(data, columnNames) {

        @Override
        public boolean isCellEditable(int row, int col) {
             return true;
        }
    };
    jTable1.setModel(model);

    jTable1.getColumn("Action").setCellRenderer(new ButtonRenderer());
    jTable1.getColumn("Action").setCellEditor(new ButtonEditor(new JCheckBox()));

getSeverExecution方法从数据库表加载数据。 当我点击Action按钮数据库得到更新没有任何问题。 窗口中还有一个“刷新”按钮。在执行的操作方法中,我将数据重新分配给variabel数据并刷新表。

public void actionPerformed(ActionEvent e) {
           data = getServerExecutions();
           model.fireTableDataChanged();

        }

但不重新加载表格数据。只有当我关闭并打开窗口时才会更新。这有什么不对?有人可以帮助我..

1 个答案:

答案 0 :(得分:2)

这一行:

data = getServerExecutions(); 

不设置表中的数据。它只是将数据变量设置为指向新数据。您需要更新TableModel。要做到这一点:

  • 在您的模型上调用适当的方法
  • 创建新模型并在JTable中设置该模型
  • 或扩展DefaultTableModel并创建一种更新模型运行的数据的方法

看到你每次都重新创建数据,我只想选择第二种选择。