Maihan Nijat
Maihan Nijat

Reputation: 9334

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.

Upvotes: 1

Views: 2778

Answers (3)

fabian
fabian

Reputation: 82461

setText expects a String as parameter. You need to convert the result to a String, e.g. 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, e.g.

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

Upvotes: 2

Java jansen
Java jansen

Reputation: 197

you can also use resultInput.setText(Double.toString(resultV));

Upvotes: 1

Scary Wombat
Scary Wombat

Reputation: 44813

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

Upvotes: 1

Related Questions