아래 샘플을 작성하여 여러 JCheckBox 만들기와 Action Listener를 시뮬레이트했습니다.여러 ActionListener를 사용하여 여러 JCheckBox 만들기
int global=0;
//some code
JCheckBox[] checkBox = new JCheckBox[2];
for(int i = 0; i <=1; i++){
checkBox[i] = new JCheckBox(strings[i]);
panel.add(checkBox[i]);
checkBox[i].addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent evt) {
if (evt.getStateChange() == ItemEvent.SELECTED){
JOptionPane.showConfirmDialog(null, "Message"+global);
}
}
});
global++;
}
내가 얻지 못하는 것은 대화 상자의 출력물이 항상 "메시지 2"라는 것입니다. 내 로직에서 각 체크 박스에 대해 하나의 AddItemListener를 선언 할 경우 "Message 1"및 "Message 2"와 같은 각 확인란의 두 가지 대화 상자를 받아야합니다. 여기서 내가 뭘 잘못하고 있니? 어떻게 처리할까요? showConfirmDialog()
먼저 당신이 바로 JOptionPane.showConfirmDialog(null, "Message"+global);
전에 (각 통화에서 증가합니다) global++
를 넣어 시도 각각의 체크 박스에 대한 다른 메시지를 원하는 경우에 global
이미 2. 가치있다라고하며이 그것을 만들 것입니다
가'지역 변수 또는 인스턴스 변수를 global' :
당신은 방법 indexInArray에서 간단한 검색을 구현할 수 있습니다 클래스? 그리고 어떤 컴파일러를 사용하고 있습니까? –
@SayemAhmed :'global'이 지역 변수 인 경우, OP는'global'이 final로 선언되지 않았기 때문에 ItemListener의 익명 클래스 내에서'global' 변수에 접근 할 수 없었습니다. – Mac
@Mac : 그래, 그거야. 생각. 코드 샘플이 혼란스러워 보였습니다. –