在Java Swing中,我創建了一個JTable
,它使用了一個表格模型類DefaultTableModel
。由於表格的一行值是布爾型,所以這些顯示爲複選框。正如我想添加到這些複選框的項目監聽器類,我確實需要初始化這些複選框中的每一個。但如果這些是由表模型自動創建的,我該怎麼辦?通過表格模型生成JCheckBoxes時的初始化
0
A
回答
2
由於這些複選框會更改基礎數據,因此添加TableModelListener
並對該列的tableChanged
事件作出反應即可。
jTable1.getModel().addTableModelListener(new TableModelListener() {
final int YOUR_BOOLEAN_COLUMN = 1;
public void tableChanged(TableModelEvent e) {
if(e.getColumn() == YOUR_BOOLEAN_COLUMN) {
// get value from model (not affected if user re-orders columns)
TableModel tableModel = jTable1.getModel();
Boolean value =
(Boolean)tableModel.getValueAt(e.getFirstRow(), YOUR_BOOLEAN_COLUMN);
System.out.println(value);
}
}
});
1
簡短的回答是表有兩個原因,你不能添加的ActionListeners到JCheckboxes:
- 使用默認設置,一個JCheckBox的用於呈現所有複選框細胞。
- 鼠標單擊包含JCheckBox的表格單元不會傳遞到複選框,它們被表格吸收。
我認爲這很重要,請問爲什麼您需要這些事件?你給出的答案將反映最好的方法。
如果您希望允許用戶編輯複選框的狀態,則最好的方法可能是覆蓋TableModel.isCellEditable(int, int)
,以便爲複選框列返回true,然後在更新TableModel時更新原始數據。
相關問題
- 1. 線程化類成員函數;線程初始化通過初始化列表
- 2. 從JaySvcUtil生成的模型初始化的上下文錯誤
- 3. 通過初始化程序列表初始化QList
- 4. 在初始化其他成員時跳過結構成員的初始化
- 5. 在派生類初始化列表中初始化模板基類成員類型
- 6. 初始創建模型時的初始成員
- 7. 如何初始化ActiveRecord無表模型?
- 8. Ruby - 初始化模型
- 9. WebformsMvp - 初始化模型
- 10. 初始化視圖模型
- 11. 初始化視圖模型
- 12. 骨幹模型初始化
- 13. 通過JavaScript生成表格
- 14. 通過JS生成表格
- 15. SELECT2初始化通過javascript
- 16. Qt - 初始化表格
- 17. 初始化ModelChoiceField表格
- 18. C++:如何通過初始化列表完成構造?
- 19. 可以通過成員初始化列表初始化靜態成員變量嗎?
- 20. 初始化向量的元組類成員初始化列表
- 21. 從JSON初始化Rails模型 - 如何初始化子關聯?
- 22. 在派生構造函數初始化列表中初始化模板
- 23. 初始化內置類型初始化
- 24. 在創建模型時初始化子模型
- 25. 如果已經初始化,通過shell重新初始化rbenv
- 26. 從CAKEPHP中的模型生成表格
- 27. Rails 5枚舉模型的關注內生成NameError:未初始化的常量
- 28. 如何通過參數時我初始化一個工廠初始化在角
- 29. 通過std :: initializer_list初始化std :: pair在初始化std :: array時不工作?
- 30. 初始化模型與Postgres的