【问题标题】:How to pass number to TextField JavaFX?如何将数字传递给 TextField JavaFX?
【发布时间】:2016-02-16 00:04:52
【问题描述】:

我正在做一个简单的计算器,用户在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);

最后一行不起作用,因为格式不同。

【问题讨论】:

  • 使用String.valueOf(resultV)

标签: java javafx javafx-8


【解决方案1】:

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

但是在这种情况下,我建议将TextFormatter 添加到TextField,这允许您使用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);

【讨论】:

    【解决方案2】:

    没有方法TextField.setText (double)

    试试

    resultInput.setText("" + resultV);
    

    但我猜你真正想要的是将结果很好地格式化为小数点后两位?

    尝试使用

    resultInput.setText(String.format ("%6.2f", resultV));
    

    【讨论】:

      【解决方案3】:

      你也可以使用 resultInput.setText(Double.toString(resultV));

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-04
        • 2021-01-15
        • 2017-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多