java - 如何将数字传递给 TextField JavaFX?

标签 java javafx javafx-8

我正在开发简单的计算器,用户在 TextField 中输入两个数字,结果显示在结果 TextField 中。我使用 Double.parseDouble 从输入 TextFields 中获取文本并对其应用操作。但我无法将它传递给第三个输入字段。我试图将 double 结果转换回 String 但它没有用。我怎样才能简单地将数字传递给 TextField?

double num1 = Double.parseDouble(numberInput1.getText());
double num2 = Double.parseDouble(numberInput2.getText());
double resultV = (num1 + num2);

resultInput.setText(resultV);

最后一行无效,因为格式不同。

最佳答案

setText 需要一个 String 作为参数。您需要将结果转换为 String,例如通过使用 Double.toString

但是在这种情况下,我建议添加 TextFormatterTextField,它允许您使用 TextField 分配/输入类型不同于 String 的值:

TextField summand1 = new TextField();
TextField summand2 = new TextField();
TextField result = new TextField();

StringConverter<Double> converter = new DoubleStringConverter();

TextFormatter<Double> tf1 = new TextFormatter<>(converter, 0d);
TextFormatter<Double> tf2 = new TextFormatter<>(converter, 0d);
TextFormatter<Double> tfRes = new TextFormatter<>(converter, 0d);

summand1.setTextFormatter(tf1);
summand2.setTextFormatter(tf2);
result.setTextFormatter(tfRes);

tfRes.valueProperty().bind(
        Bindings.createObjectBinding(() -> tf1.getValue() + tf2.getValue(),
                tf1.valueProperty(),
                tf2.valueProperty()));

result.setEditable(false);

这允许您使用 TextFormatter 分配值,例如

double someValue = 3d;
tf1.setValue(someValue);

关于java - 如何将数字传递给 TextField JavaFX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35421392/

相关文章:

java - Hadoop Reduce 输入记录=0

java - 在屏幕右下角的位置

javaFX 自定义控件的不良行为

java - 在选择框中列出所有可用的系统字体

java - 匿名实现导致内存泄漏

input - 在 JavaFX 文本字段中限制输入的推荐方法

JavaFX - 更改拖放描述

JavaFX Glitches 动画非标准小部件

JavaFx如何使用时间轴移动窗口位置

java - 有没有办法安排任务直到事件发生或经过特定时间为止?