2016-06-27 48 views
0

我想添加一個項監聽器到一個複選框,以查看它是否被選中,如果是,將被添加到要選擇的SQL表名列表中。相反,如果沒有選擇,則從列表中刪除它。我無法將偵聽器添加到任何複選框,因爲「它們不是最終的」。我能做什麼/有沒有更好的方法來攻擊它?嘗試添加項監聽器到JCheckBox對象

我的方法:

public JPanel drawChecks(){ 

ArrayList<String> list = MainFrame.grabSQLTableNames(); 
int index = list.size(); 
int rows = 1; 
while(index > 1){ 
rows++; 
index = index - 3; 
} 

GridLayout c = new GridLayout(rows, 3); 
JPanel panel = new JPanel(c); 
JCheckBox check[] = new JCheckBox[list.size()]; 

for(int x = 0; x < list.size(); x++){ 

check[x] = new JCheckBox(list.get(x)); 
check[x].setVisible(true); 
check[x].addItemListener(new ItemListener() { 
    public void itemStateChanged(ItemEvent e) { 
    if (check[x].getState == true){ 

     //do something 

     } 
    } 
    }); 
panel.add(check[x]); 
} 

回答

1

使用的ItemEvent

public void itemStateChanged(ItemEvent e) { 
    JCheckBox checkBox = (JCheckBox)e.getSource(); 
    if (checkBox.isSelected()){ 
     //do something 
    } 
} 

以供將來參考getSource方法獲取事件的源,請閱讀提示以下上發佈代碼示例,要求關於堆棧溢出的問題:https://stackoverflow.com/help/mcve