2016-06-27 8 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