簡體   English   中英

如果單元格包含復選框,如何獲取JTable的內容

[英]How to get content of JTable if cell contains checkbox

我在Netbeans中創建了一個JTable,其第一列包含復選框。

這些復選框是通過添加

JCheckBox checkBox = new javax.swing.JCheckBox(); 

jTable1.getColumn("ColumnName").setCellEditor(new DefaultCellEditor(checkBox)); 

右鍵單擊JTable時在定制代碼下。 並且在Table Contents中,我將數據類型指定為Boolean (因為我之前從未使用過JTable,所以我基本上遵循了該網站上的說明: http : //forums.netbeans.org/topic9007.html

我現在的問題是:例如,如何獲取row = 1和coloumn = 1中的實際復選框? 這些嘗試不起作用:

JCheckBox j = (JCheckBox) jTable1.getComponent(1);

JCheckBox j = (JCheckBox) jTable1.getModel().getValueAt(1, 1);

我收到錯誤消息“ java.lang.String無法轉換為javax.swing.JCheckBox”

對於我想做的事情,我需要找回類型為“復選框”的對象/組件,而不僅僅是找出是否被選中。 那有可能嗎? 我在編程方面不是很高級,所以這就是我遇到麻煩的原因。

編輯 :下面的舊答案被提醒,通過TableModel直接獲取boolean值比用JTable UI搞砸更安全。

不要嘗試將任何內容JCheckBoxJCheckBox ,而是遍歷Model以獲得所需的值。


Component列表包含在Object定義的所有內容,因此您可能並不總是獲得所需的特定元素。

我建議遍歷Components並使用instanceof檢查它是否與JCheckBox匹配。

for(Component c : jTable1.getComponents[]) {
    if(c instanceof javax.swing.JCheckBox) {
        // do the stuff
    } else {
        // don't do the stuff
    }
}

甚至遍歷第一列中的Components ,都可能使事情變得更容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM