Reputation: 9334
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
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
Reputation: 197
you can also use
resultInput.setText(Double.toString(resultV));
Upvotes: 1
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