Чтобы сократить код, я начал создавать списки с компонентами, необходимыми в моем проекте java, чтобы получить к ним доступ с помощью простого for-loop.addItemListener with for-loop невозможно
Как все работает, я хотел бы добавить ItemListeners к компонентам в списке:
checkBoxes.get(0).addItemListener(){/*including code here*/}
работает совершенно нормально, однако я хотел бы установить их с петлей, а также. Поэтому я пробовал это:
for (int i=0; i<=10; i++){
checkBoxes.get(i).addItemListener(new ItemListener){
public void itemStateChanged(ItemEvent arg0){
someMethod(i);
}
});
}
как checkBoxes должен запускать другой метод на основе их индекса. Я получаю сообщение об ошибке компилятора:
Local variable i defined in an enclosing scope must be final or effectively final
Так я предполагаю, что я не могу добавить ItemListeners в этой динамично? Есть ли способ обойти это?
После второй проверки кажется, что я не могу использовать i
?
Будет ли 'someMethod (i)' обрабатывать каждый флажок точно так же?. Если это так, вам может не понадобиться передавать индекс. Если метод должен знать, с какой кнопкой он имеет дело, тогда лучше всего проверить источник действия, найти кнопку в списке и передать это во время выполнения. Надеюсь, это поможет – jr593
Предполагается, что он отключит счетчик с тем же индексом в другом списке. Спасибо за предложение, однако; Я запомню это! – geisterfurz007