如何将数字传递给TextField JavaFX?

时间:2016-02-16 00:04:52

标签: 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);

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

3 个答案:

答案 0 :(得分:2)

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

但是,在这种情况下,我建议在TextField添加TextFormatter,这样您就可以使用String分配/输入与TextField不同的类型的值:< / p>

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);

答案 1 :(得分:1)

没有方法TextField.setText (double)

resultInput.setText("" + resultV);

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

尝试使用

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

答案 2 :(得分:1)

你也可以使用 b