2011-03-09 128 views
1

在我的应用程序中,我添加了一个JTabel并使用setCellRender方法向表中添加按钮列,如下所示。当我单击按钮时更新JTable

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方法从数据库表中加载数据。 当我点击动作按钮数据库得到更新没有任何问题。 窗口中还有一个刷新按钮。在执行的操作方法中,我将数据重新分配到变量数据并刷新表格。

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

     } 

但表格数据没有重新加载。只有当我关闭并打开窗口时,它才会更新。这里有什么问题?可有一个人请帮助我..

+0

其实我想做的是分配新的数据'数据',并重新使用它的表格 – nath 2011-03-09 07:23:56

回答

2

这条线:

data = getServerExecutions(); 

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

  • 呼叫模型
  • 适当的方法创建一个新的模型,并设置该模型在JTable
  • 或延长DefaultTableModel,并创建一种方法来更新数据,模型运行关闭

看到您每次都重新创建数据,我只会选择第二个选项。