2016-09-12 31 views
3

您能否告訴我是否應該以不同的方式做這件事?我需要將我的數據行上的最後一個單元格複製到一個對象,當單擊刪除按鈕時,我將從列表中刪除該複選框。當我在代碼中手動創建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); 

Table that rendered with the code above

編輯:我想建議從@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); 
} 

enter image description here

什麼我可以做些什麼來幫助表格識別和渲染布爾的複選框?

+0

'我需要做的最後一個單元格在我的數據行的該列一個布爾值checkbox'通行證,並有TableModel的覆蓋'getColumnClass'到爲該列返回一個Boolean.class。請參閱http://stackoverflow.com/questions/21242268/how-to-make-a-specific-jtable-boolean-column-editable – copeg

+1

[如何將複選框添加到JTABLE擺動](http:// stackoverflow。 com/questions/7391877/how-to-add-checkboxes-to-jtable-swing) – copeg

+1

@copeg這是針對Codename One而不是Swing的。請參閱https://www.codenameone.com/該API與Swing非常相似,但是專爲移動設計。 –

回答

1

試試這個:

Object[][] cells = { 
    {"TOTAL","","0","0",Boolean.FALSE}, 
    {"DD4500",1,0f,0f,Boolean.TRUE} 
}; 

該模型包含的數據,以便設置數據的boolean表中的單元格將隱含格式化。你應該混合模型和視圖(CheckBox是視圖)

+0

謝謝Shai,我會嘗試。模型vs視圖的好處。那麼如果該列是可編輯的,那麼我將能夠檢查並取消選中,然後稍後「閱讀」模型以確定選擇的內容? –

+0

是的,你將能夠做到這一點 –

+0

Shai,我嘗試了你的建議,但我不知道我做錯了什麼,它呈現爲一個字符串「真」或「假」。我在上面更新了我的問題,並詳細說明了我的嘗試。你能再看一下嗎? –

相關問題