当前位置: 首页 > 知识库问答 >
问题:

为什么在JavaFX中添加一个TextField会导致多个异常?[副本]

顾俊誉
2023-03-14

我正在尝试创建多个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();

    }
}

共有1个答案

朱高超
2023-03-14

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

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

 BigDecimal milesInput = new BigDecimal(milesTF.getText());
 BigDecimal kiloInput = new BigDecimal(kiloTF.getText());
 类似资料:
  • 这个问题在这里总结得很好;基本上,如果您在useEffect中有一个异步函数(这是您期望的函数),您将导致每个更新状态的组件的重新呈现。我通常不想像作者的解决方案/变通方法那样把事情堆在一起,对我来说,这种行为没有意义(您希望所有的状态更新都一起发生)。

  • 在所有的例子代码中,我们在引导过程中通过 handler() 或childHandler() 都只添加了一个 ChannelHandler 实例,对于简单的程序可能足够,但是对于复杂的程序则无法满足需求。例如,某个程序必须支持多个协议,如 HTTP、WebSocket。若在一个 ChannelHandle r中处理这些协议将导致一个庞大而复杂的 ChannelHandler。Netty 通过添加多

  • 应用程序可以持久化用户,以后可以修改。最近无法修改用户,引发了异常。用户实体被持久化,没有错误或验证。有人知道是什么导致了这种行为,或者我如何找到更多细节吗?

  • 这是我的密码: 将按如下方式生成: 都很好。一切都被包装成标签。 现在我需要将这一行添加到上面的代码中: 下面是生成的代码: 但令人惊讶的是,它将被错误地生成: 看到没?元素跳出了标记。我怎么能把所有的东西都放在里面?

  • 我有一个POJO类,用于使用Jackson进行反序列化。这个类包含所有类变量的默认构造函数、getter和setter方法<因为我需要一些关于POJO内容的高级逻辑,所以我添加了一个方法 但现在,我的单元测试在反序列化过程中失败,只有以下例外: 在我看来,Jackson似乎识别了一个get方法,并由此推断出,反序列化必须有一个类似的JSON属性 当我用@JsonIgnore注释方法时,测试成功了。

  • 问题内容: 如果您查看Node.js 文档开头的域,则会指出: 本质上,throw在JavaScript中是如何工作的,几乎没有任何方法可以安全地“从上次中断的地方捡起”,而不会泄漏引用或创建其他未定义的脆性状态。 再次在代码示例中,它在第一部分中给出: 尽管我们阻止了进程的突然重启,但是我们正在疯狂泄漏资源 我想了解为什么会这样?哪些资源正在泄漏?他们建议您仅使用域来捕获错误并安全地关闭进程。这