繁体   English   中英

如何为JTable Cell更改实现事件处理程序

[英]How to implement event handler for JTable Cell change

我想知道如何为jTable单元更改实现事件处理程序。 我有这个jtable的地方,我动态地向这个jtable添加数据

用于添加数据的代码段为:

JSONArray objResponseArray = (JSONArray) response.get("response");
DefaultTableModel model = (DefaultTableModel) tblAccounts.getModel();
for (int i = 0; i < objResponseArray.size(); i++) {
    JSONObject objTempAccount = (JSONObject) objResponseArray.get(i);
    Object[] row = {
         objTempAccount.get("Account ID").toString(),
         objTempAccount.get("Account Type").toString(),
         objTempAccount.get("Account Number").toString(),
         objTempAccount.get("Sort Code").toString(),
         objTempAccount.get("Balance").toString(),
         objTempAccount.get("Card").toString()
   };
   model.addRow(row);
}

在此表中,我已进行了要编辑的单元格。 话虽这么说,我如何触发事件处理程序以在更改单元格时触发。 当它被触发时,我想获取整行并更新数据库。

重要信息:我正在使用Netbeans,并且事件处理程序是从jtable元素的属性窗口中的事件中选择的,因此请帮助我实现这一点。

您可以将TableModelListener添加到TableModel 更改数据时将生成一个事件。 但是,如果您在不更改任何数据的情况下开始将一个单元格和表格编辑到另一个单元格,则它还会生成一个事件。

因此,您可能要考虑使用表单元格侦听器 ,它仅在单元格中的数据实际更改时才会生成事件。

在这两种情况下,事件都将包含已更改的单元格的行/列,因此您可以使用表的getModel().getValueAt(...)方法轻松地从行中的其他列获取日期。

我正在使用Netbeans ...

那应该无关紧要。 您应该学习如何使用Swing,而不是IDE。 如果您曾经切换过IDE,则代码可能无法移植,尤其是用于构建框架的代码。 那就是您仍然需要在另一个IDE中手动修改代码。

    CellEditorListener ChangeNotification = new CellEditorListener() { 
   public void editingCanceled(ChangeEvent e) {

       //Action to be performed
    }


    public void editingStopped(ChangeEvent e) {
        //Action to be performed
    }
};
use the above code inside the class before the constructor.

Inside the constructor give

tablename.getDefaultEditor(String.class).addCellEditorListener(ChangeNotification);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM