Поскольку вы используете lambdas, вы также можете воспользоваться другими функциями Java 8, например потоками.
Например, IntStream
:
Последовательность примитивные значения элементов, поддерживающие последовательные и параллельные агрегированные операции. Это int-примитивная специализация Stream.
blockquote>может использоваться для замены цикла for:
IntStream.range(0,10).forEach(i->{...});
, поэтому теперь у вас есть индекс, который можно использовать для ваша цель:
IntStream.range(0,10) .forEach(i->button[i].setOnAction(ea->button[i].setDisable(true)));
Также вы можете сгенерировать поток из массива:
Stream.of(button).forEach(btn->{...});
В этом случае у вас не будет индекса, так как @shmosel предлагает, вы можете использовать источник события:
Stream.of(button) .forEach(btn->btn.setOnAction(ea->((Button)ea.getSource()).setDisable(true)));
EDIT
Как указывает @James_D, здесь нет необходимости понижать прогноз:
Stream.of(button) .forEach(btn->btn.setOnAction(ea->btn.setDisable(true)));
В обоих случаях вы также можете воспользоваться параллельными операциями:
IntStream.range(0,10).parallel() .forEach(i->button[i].setOnAction(ea->button[i].setDisable(true))); Stream.of(button).parallel() .forEach(btn->btn.setOnAction(ea->btn.setDisable(true)));