为什么将TextField添加到JavaFX会导致多个异常?

时间:2019-03-13 19:00:50

标签: java exception javafx textfield

我正在尝试创建多个JavaFX应用程序,直到现在尝试添加TextField时都没有问题。我可以拥有一个全新的文件,并包含一行初始化TextField的行,这将导致异常。我在网上四处寻找,一无所获。只需添加TextField,即使在其他先前运行的k程序中,也会出现异常。以下示例:

Error Image

我到目前为止创建的程序:

public class CH16Q04 extends Application {
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        VBox masterPane = new VBox();
        HBox milesPane = new HBox();
        HBox kiloPane = new HBox();


        javafx.scene.control.TextField milesTF = new TextField("Miles: ");
        milesTF.setAlignment(Pos.BASELINE_RIGHT);
        javafx.scene.control.TextField kiloTF = new TextField("Kilometers" );
        kiloTF.setAlignment(Pos.BASELINE_RIGHT);

        milesPane.getChildren().addAll(new Label("Miles: "), milesTF);
        kiloPane.getChildren().addAll(new Label("Kilometers: "), kiloTF);
        masterPane.getChildren().addAll(milesPane,kiloPane);
        BigDecimal milesInput = new BigDecimal(milesTF.getText());
        BigDecimal kiloInput = new BigDecimal(kiloTF.getText());

        milesTF.setOnAction(e -> {

            kiloTF.setText((milesInput.multiply(new 
            BigDecimal("1.609344")).toString()));
            kiloTF.setStyle("-fx-text-fill: red");
        });

        kiloTF.setOnAction(e -> {

            milesTF.setText(kiloInput.multiply(new 
            BigDecimal("0.621371")).toString());
            milesTF.setStyle("-fx-text-fill: red");
        });


        Scene scene = new Scene(masterPane);
        primaryStage.setTitle("Chapter 16, Question 04");
        primaryStage.setScene(scene);
        primaryStage.show();

    }
}

1 个答案:

答案 0 :(得分:0)

您需要先设置TextField的值,然后才能使用它们实例化BigDecimal对象。

 milesTF.setText("0.00");
 kiloTF.setText("0.00");

 BigDecimal milesInput = new BigDecimal(milesTF.getText());
 BigDecimal kiloInput = new BigDecimal(kiloTF.getText());