您能否告訴我是否應該以不同的方式做這件事?我需要將我的數據行上的最後一個單元格複製到一個對象,當單擊刪除按鈕時,我將從列表中刪除該複選框。當我在代碼中手動創建TableModel並添加一個複選框時,它在單元格中呈現爲對象的「to-string」而不是實際的複選框。將複選框添加到表組件中的CodenameOne TableModel
所以問題:是否有另一種方法來做到這一點,使CheckBox顯示爲一個實際的複選框,而不是?
String[] columnNames = {"Type","Qty","Raw TB","Usable TB","Del?"};
Object[][] cells = {{"TOTAL","","0","0",""},{"DD4500",1,0f,0f,new CheckBox()}};
Table cbSummaryTable = findSummaryTable(buildContainer);
TableModel tableModel = new DefaultTableModel(columnNames,cells);
cbSummaryTable.setModel(tableModel);
編輯:我想建議從@ShaiAlmog,雖然它看起來前途無量(並提醒我的東西,我看到其他地方)似乎沒有工作的某些原因。該表現在只是說「真」和「假」。我也試過了一個關於重寫TableModel的技巧,使單元格可編輯,但也沒有幫助。
新代碼:
private void clearCBSummaryTable(Container buildContainer){
String[] columnNames = {"Type","Qty","Raw TB","Usable TB","Del?"};
Object[][] cells = {{"TOTAL","",0f,0f,Boolean.TRUE},{"DD4500",1,0f,0f,Boolean.FALSE}};
Table cbSummaryTable = findSummaryTable(buildContainer);
TableModel tableModel = new DefaultTableModel(columnNames,cells){
@Override
public boolean isCellEditable(int row, int column) {
if (row >= 2 && column == 4){
return true;
}else {
return super.isCellEditable(row, column);
}
}
};
cbSummaryTable.setModel(tableModel);
}
什麼我可以做些什麼來幫助表格識別和渲染布爾的複選框?
'我需要做的最後一個單元格在我的數據行的該列一個布爾值checkbox'通行證,並有TableModel的覆蓋'getColumnClass'到爲該列返回一個Boolean.class。請參閱http://stackoverflow.com/questions/21242268/how-to-make-a-specific-jtable-boolean-column-editable – copeg
[如何將複選框添加到JTABLE擺動](http:// stackoverflow。 com/questions/7391877/how-to-add-checkboxes-to-jtable-swing) – copeg
@copeg這是針對Codename One而不是Swing的。請參閱https://www.codenameone.com/該API與Swing非常相似,但是專爲移動設計。 –