Почему при запуске javafx-приложения я вижу ошибку : "button is null"?

У меня есть вот такой метод:

public void click()
{
    for(Button button : allButtons){
        button.setOnMouseClicked(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent mouseEvent) {
                equationField.appendText(button.getText());
            }
        });
    }

}

}

И класс Buttons, в котором объявлены кнопки:

public class Buttons {

public TextField equationField;
public Button zeroButton;
public Button oneButton;
public Button twoButton;
public Button threeButton;
public Button fourButton;
public Button fiveButton;
public Button sixButton;
public Button sevenButton;
public Button eightButton;
public Button nineButton;
public Button plusButton;
public Button minusButton;
public Button multiplicationButton;
public Button divideButton;
public Button equalsButton;

Button[] allButtons = new Button[]{ zeroButton, oneButton, 
twoButton, threeButton, fourButton, fiveButton,
sixButton, sevenButton, eightButton, nineButton};

При запуске программу вижу вот такую ошибку:

"button" is null


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

Автор решения: Зонтик

Вы не создали ни одну из кнопок, а лишь объявили их в классе Buttons. То есть значение всех кнопок, которые вы создаёте - это null. Эти две записи дают один и тот же результат:

public Button zeroButton;
public Button zeroButton = null;

Button - это ссылочный тип данных! Кнопки нужно создать, прежде чем производить над ними действия:

public Button zeroButton = new Button();

И так с каждой кнопкой!

→ Ссылка