如何为 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);
}
在此table中,我已将单元格设为要编辑的。话虽如此,我如何触发事件处理程序以在更改单元格时触发。当它被触发时,我想获取整行并更新数据库。
重要提示:我正在使用 Netbeans,事件处理程序是从 jtable 元素的属性 window 中的事件中选择的,因此请帮助我实现它。
您可以将 TableModelListener
添加到您的 TableModel
。当数据改变时会产生一个事件。但是,如果您开始编辑一个单元格并 table 到另一个单元格而不更改任何数据,它也会生成一个事件。
因此,您可能需要考虑 Table Cell Listener,它只会在单元格中的数据实际更改时生成事件。
在这两种情况下,事件都将包含更改的单元格的 row/column,因此您可以使用 [=27] 的 getModel().getValueAt(...)
方法轻松地从行中的其他列中获取日期=].
I am using Netbeans ...
那应该是无关紧要的。您应该学习如何使用 Swing,而不是 IDE。如果你曾经切换 IDE 代码可能不是 portable,尤其是构建框架的代码。也就是说,无论如何您都需要手动修改另一个 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);
我想知道如何实现 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);
}
在此table中,我已将单元格设为要编辑的。话虽如此,我如何触发事件处理程序以在更改单元格时触发。当它被触发时,我想获取整行并更新数据库。
重要提示:我正在使用 Netbeans,事件处理程序是从 jtable 元素的属性 window 中的事件中选择的,因此请帮助我实现它。
您可以将 TableModelListener
添加到您的 TableModel
。当数据改变时会产生一个事件。但是,如果您开始编辑一个单元格并 table 到另一个单元格而不更改任何数据,它也会生成一个事件。
因此,您可能需要考虑 Table Cell Listener,它只会在单元格中的数据实际更改时生成事件。
在这两种情况下,事件都将包含更改的单元格的 row/column,因此您可以使用 [=27] 的 getModel().getValueAt(...)
方法轻松地从行中的其他列中获取日期=].
I am using Netbeans ...
那应该是无关紧要的。您应该学习如何使用 Swing,而不是 IDE。如果你曾经切换 IDE 代码可能不是 portable,尤其是构建框架的代码。也就是说,无论如何您都需要手动修改另一个 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);