简体   繁体   中英

How to pass number to TextField JavaFX?

I am working on simple calculator, where users input two numbers in TextField and the result is displayed in result TextField . I used Double.parseDouble to get the text from input TextFields and apply the operation on it. But I am unable to pass it to third input field. I tried to cast back the double result to String but It didn't work. How can I simply pass number to TextField?

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

resultInput.setText(resultV);

The last line is not working and as the format is different.

setText expects a String as parameter. You need to convert the result to a String , eg by using Double.toString .

However in this case I recommend adding a TextFormatter to the TextField which allows you to assign/input values of a type different to String using a TextField :

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

This allows you to assign the value using the TextFormatter , eg

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

There is no method TextField.setText (double)

try

resultInput.setText("" + resultV);

but I guess what you really want is for the result to be nicely formatted to maybe two decimal places?

try using

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

您还可以使用resultInput.setText(Double.toString(resultV));

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM