У меня есть массив узлов HBox, которые должны работать как набор переключателей. Щелчок по любому из узлов обновит значение int, соответствующее позиции выбранного узла в массиве.
Это список массивов, потому что количество узлов HBox должно быть динамическим и определяться во время выполнения на основе аргументов. Каждый HBox идентичен по формату, но содержимое этикеток внутри уникально.
Цикл через список массивов (arrayOfHBox) для добавления события щелчка мыши к каждому узлу создает проблему внутренних классов, не принимающих неконечные переменные (поэтому внутри события мыши я не могу сказать, в какой позиции массива я нахожусь). Я понимаю причины, по которым это должно произойти, но я не уверен в альтернативном подходе, чтобы обойти это.
int selectedIndex=-1; //the int to determine which "radio button" HBox is clicked
for (int i=0;i<arrayOfHBox.size();i++)
{
arrayOfHBox.get(i).addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>()
{
@Override
public void handle(MouseEvent event)
{
selectedIndex=i; //Won't compile
event.consume();
}
});
}
Тогда возникает вопрос: есть ли способ добавить обработчики мыши ко всем узлам HBox, каждый из которых будет устанавливать внешнюю переменную, равную положению узла, на который нажали, в массиве?