How to pass number to TextField JavaFX?

后端 未结 3 726
独厮守ぢ
独厮守ぢ 2021-01-23 18:20

I am working on simple calculator, where users input two numbers in TextField and the result is displayed in result TextField. I used Double.pars

相关标签:
3条回答
  • 2021-01-23 19:05

    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);
    
    0 讨论(0)
  • 2021-01-23 19:07

    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));
    
    0 讨论(0)
  • 2021-01-23 19:13

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

    0 讨论(0)
提交回复
热议问题