Имам списък с масиви от HBox възли, които трябва да работят нещо като набор от радио бутони. Щракването върху който и да е от възлите ще актуализира int стойност, съответстваща на позицията на кликнатия възел в масива.
Това е списък с масиви, тъй като броят на възлите на HBox трябва да бъде динамичен и определен по време на изпълнение въз основа на аргументи. Всеки HBox е идентичен по формат, но съдържанието на етикетите вътре е уникално.
Преминаването през arraylist (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, където всеки ще зададе външна променлива, равна на позицията на кликнатия възел в масива?