如何将数字传递给TextField JavaFX?
我正在研究简单的计算器,用户在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);
最后一行不起作用,因为格式不同。
没有方法TextField.setText (double)
尝试
resultInput.setText("" + resultV);
但我想你真正想要的是将结果很好地格式化为两位小数?
尝试使用
resultInput.setText(String.format ("%6.2f", resultV));
setText
期望String
作为参数。 您需要将结果转换为String
,例如使用Double.toString
。
但是在这种情况下,我建议在TextField
添加一个TextFormatter
,它允许您使用TextField
分配/输入与String
不同的类型的值:
TextField summand1 = new TextField(); TextField summand2 = new TextField(); TextField result = new TextField(); StringConverter converter = new DoubleStringConverter(); TextFormatter tf1 = new TextFormatter<>(converter, 0d); TextFormatter tf2 = new TextFormatter<>(converter, 0d); TextFormatter 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);
你也可以使用resultInput.setText(Double.toString(resultV));