簡體   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