我正在尝试创建多个JavaFX应用程序,直到现在尝试添加TextField
时都没有问题。我可以拥有一个全新的文件,并包含一行初始化TextField
的行,这将导致异常。我在网上四处寻找,一无所获。只需添加TextField,即使在其他先前运行的k程序中,也会出现异常。以下示例:
我到目前为止创建的程序:
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();
}
}
答案 0 :(得分:0)
您需要先设置TextField的值,然后才能使用它们实例化BigDecimal对象。
milesTF.setText("0.00");
kiloTF.setText("0.00");
BigDecimal milesInput = new BigDecimal(milesTF.getText());
BigDecimal kiloInput = new BigDecimal(kiloTF.getText());