Не могу привязать всем кнопкам одно событие

С помощью SceneBuilder я создал много кнопок, в нем же я задал этим кнопкам текст (буквы от A до Z). Теперь я хочу при нажатии на кнопку, чтобы срабатывало происходило некоторое действие, например, вывод текста на кнопке. Я не хочу для каждой кнопки писать отдельный обработчик событий, так как все кнопки выполняют код с минимальными различиями, поэтому нужен какой-то метод, чтобы вызов события можно было привязать ко всем кнопкам. Я пробовал следующие пути решения:

anchorPane.addEventFilter(MouseEvent.MOUSE_PRESSED, event -> {
           if(event.getTarget() instanceof Button){          
               System.out.println("Button" + event.getTarget());
               String text = ((Button)event.getTarget()).getText();
               ((Button)event.getTarget()).setStyle("-fx-background-color: BLACK");
               System.out.println(text);
           }
        });

Данный код находится в методе initialize в классе Controller. Это наиболее близкий вариант решения, которого мне удалось добиться. Но проблема в том, что нажатие на область текста не вызывает срабатывание события. Область срабатывания Код работает, только если нажимать в область зеленой штриховки. Далее я пробовал еще такой вариант:

@FXML
    private void initialize() {
    \\scrollPane.setContent(workPane);  
    
    Button arrayOfButtons [] = new Button[]{
    operandButtonA, operandButtonB, operandButtonC, operandButtonD,operandButtonE,operandButtonF,operandButtonG,operandButtonH,operandButtonI,
        operandButtonJ,operandButtonK, operandButtonL, operandButtonM, operandButtonN, operandButtonO, operandButtonP, operandButtonQ,
        operandButtonR, operandButtonS, operandButtonT, operandButtonU, operandButtonV, operandButtonW, operandButtonX, operandButtonY,
        operandButtonZ};    
    
        for(int i = 0; i < arrayOfButtons.length; i++){
            arrayOfButtons[i].setOnMouseClicked(event -> {System.out.println(arrayOfButtons[i].getText()); \\ ошибка
            });   
        }
    }

В цикле я пытался каждой кнопке добавить обработчик клика. С этим кодом у меня возникает ошибка в компиляторе

local variables referenced from a lambda expression must be final or effectively final

Я застрял и я не знаю, что мне делать.


Ответы (0 шт):