Я использую обработчик нажатия кнопки, чтобы вызвать кнопку и прочитать текст. Правильно ли я читаю текст, я получаю исключение нулевого указателя для myTextfields . Я надеялся, что кто-то может помочь, я думаю, что это также может быть связано с тем, что я использую сетку. Нужно ли инициализировать gridPane?
public class Main extends Application {
private TextField myTextField, myTextField2;
private Label resultLabel;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
try {
Button myButton = new Button("Calculate");
myButton.setOnAction(new ButtonClickHandler());
Label messageLabel = new Label("Hours Worked?");
Label messageLabel2 = new Label("Pay Rate?");
TextField myTextField = new TextField();
TextField myTextField2 = new TextField();
BorderPane root = new BorderPane();
GridPane gridpane = new GridPane();
gridpane.add(messageLabel, 0,0);
gridpane.add(messageLabel2, 0,1);
gridpane.add(myButton, 3,3);
gridpane.add(myTextField, 3,0);
gridpane.add(myTextField2, 3,1);
gridpane.setHgap(10);
Scene scene = new Scene(root,400,400);
Scene scene2 = new Scene(gridpane,400,400);
gridpane.setVgap(10);
//gridpane.setGridLinesVisible(true);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.setScene(scene2);
primaryStage.setTitle("Wage pay");
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
class ButtonClickHandler implements EventHandler <ActionEvent>{
@Override
public void handle(ActionEvent event) {
int hours = Integer.parseInt(myTextField.getText());
int pay = Integer.parseInt(myTextField2.getText());
int calculation = hours * pay;
resultLabel.setText(String.format("%.2f", calculation));
resultLabel.setText("thank you");
}
}
}