Java FX diving integerproperty

Java FX diving integerproperty,java,javafx,Java,Javafx,我试图用属性绑定文本字段,但它给出了 错误,请参见下文。谢谢 private static final IntegerProperty DIVISOR = new SimpleIntegerProperty(32); rateTextField.textProperty().bindBidirectional(params.rateProperty().divide(DIVISOR), new NumberStringConverter()); //bindBidirectional(

我试图用属性绑定文本字段,但它给出了 错误,请参见下文。谢谢

  private static final IntegerProperty DIVISOR = new SimpleIntegerProperty(32);

  rateTextField.textProperty().bindBidirectional(params.rateProperty().divide(DIVISOR), new NumberStringConverter()); //bindBidirectional(javafx.beans.binding.StringBinding, javafx.util.converter.NumberStringConverter)

如何将方程双向绑定?“比率/除数”不是可以赋值的。出于同样的原因,代码
rate/32=newRate将不会编译

您可以使用和使用侦听器而不是绑定:

NumberStringConverter converter = new NumberStringConverter();
TextFormatter<Number> formatter = new TextFormatter<>(converter);
params.rateProperty().addListener(
    (o, old, rate) -> formatter.setValue(rate.doubleValue() / DIVISOR.get()));
formatter.valueProperty().addListener(
    (o, old, rate) -> params.setRate(rate.doubleValue() * DIVISOR.get()));

rateTextField.setTextFormatter(formatter);
NumberStringConverter转换器=新的NumberStringConverter();
TextFormatter formatter=新的TextFormatter(转换器);
params.rateProperty().addListener(
(o,old,rate)->formatter.setValue(rate.doubleValue()/divisior.get());
formatter.valueProperty().addListener(
(o,old,rate)->params.setRate(rate.doubleValue()*divisior.get());
rateTextField.setTextFormatter(格式化程序);
如果除数从未更改,则可以将其设置为基本整数而不是属性:

private static final int DIVISOR = 32;

// ...

NumberStringConverter converter = new NumberStringConverter();
TextFormatter<Number> formatter = new TextFormatter<>(converter);
params.rateProperty().addListener(
    (o, old, rate) -> formatter.setValue(rate.doubleValue() / DIVISOR));
formatter.valueProperty().addListener(
    (o, old, rate) -> params.setRate(rate.doubleValue() * DIVISOR));

rateTextField.setTextFormatter(formatter);
私有静态最终整数除数=32;
// ...
NumberStringConverter转换器=新的NumberStringConverter();
TextFormatter formatter=新的TextFormatter(转换器);
params.rateProperty().addListener(
(o,old,rate)->formatter.setValue(rate.doubleValue()/除数);
formatter.valueProperty().addListener(
(o,old,rate)->params.setRate(rate.doubleValue()*除数));
rateTextField.setTextFormatter(格式化程序);

如何将双向绑定到方程?“比率/除数”不是可以赋值的。出于同样的原因,代码
rate/32=newRate将不会编译

您可以使用和使用侦听器而不是绑定:

NumberStringConverter converter = new NumberStringConverter();
TextFormatter<Number> formatter = new TextFormatter<>(converter);
params.rateProperty().addListener(
    (o, old, rate) -> formatter.setValue(rate.doubleValue() / DIVISOR.get()));
formatter.valueProperty().addListener(
    (o, old, rate) -> params.setRate(rate.doubleValue() * DIVISOR.get()));

rateTextField.setTextFormatter(formatter);
NumberStringConverter转换器=新的NumberStringConverter();
TextFormatter formatter=新的TextFormatter(转换器);
params.rateProperty().addListener(
(o,old,rate)->formatter.setValue(rate.doubleValue()/divisior.get());
formatter.valueProperty().addListener(
(o,old,rate)->params.setRate(rate.doubleValue()*divisior.get());
rateTextField.setTextFormatter(格式化程序);
如果除数从未更改,则可以将其设置为基本整数而不是属性:

private static final int DIVISOR = 32;

// ...

NumberStringConverter converter = new NumberStringConverter();
TextFormatter<Number> formatter = new TextFormatter<>(converter);
params.rateProperty().addListener(
    (o, old, rate) -> formatter.setValue(rate.doubleValue() / DIVISOR));
formatter.valueProperty().addListener(
    (o, old, rate) -> params.setRate(rate.doubleValue() * DIVISOR));

rateTextField.setTextFormatter(formatter);
私有静态最终整数除数=32;
// ...
NumberStringConverter转换器=新的NumberStringConverter();
TextFormatter formatter=新的TextFormatter(转换器);
params.rateProperty().addListener(
(o,old,rate)->formatter.setValue(rate.doubleValue()/除数);
formatter.valueProperty().addListener(
(o,old,rate)->params.setRate(rate.doubleValue()*除数));
rateTextField.setTextFormatter(格式化程序);

hmm。。你试过这个吗?Afair,格式化程序的值是从textField设置的,所以绑定它会失败。@kleopatra你说得对。更新为只使用侦听器(我做了测试)。是的,它起作用了。但我不确定上述解决方案是否有任何特权。rateTextField.focusedProperty();rateTextField.textProperty().setValue(String.valueOf((params.getRate()/除数));隐马尔可夫模型。。你试过这个吗?Afair,格式化程序的值是从textField设置的,所以绑定它会失败。@kleopatra你说得对。更新为只使用侦听器(我做了测试)。是的,它起作用了。但我不确定上述解决方案是否有任何特权。rateTextField.focusedProperty();rateTextField.textProperty().setValue(String.valueOf((params.getRate()/除数));