如何在 JavaFX 的 Spinner 中定义无上限

How to define no upper limit in JavaFX's Spinner

我正在尝试制作一个数字 Spinner。我不想定义最大值。下面的代码给我一个错误,因为 Spinner(int min, int max, int initalValue) 不接受空值。

Spinner<Integer> spinner = new Spinner<Integer>(1, null, 1);

在 Swing 中,我可以为此传递 null 值,我如何在 JavaFX 中做同样的事情?

长话短说,你做不到!

原因

  1. 微调器未设计为采用 null 值。微调器将 原始数据类型 作为参数并在内部调用 SpinnerValueFactory 其构造函数再次接受原始数据类型。 不能将 null 传递给原始类型。
  2. 即使您定义了 Spinner spinner = new Spinner(),您也必须使用 setValueFactory() 才能生效。

解决方案

您最好的选择是使用 INTEGER.MAX_VALUE in case you are using a SpinnerValueFactory.IntegerSpinnerValueFactory,恕我直言,这应该足够了 ;)

Spinner<Integer> spinner = new Spinner<Integer>(1,Integer.MAX_VALUE, 1);

如果您需要更高的值,请使用 DoubleSpinnerValueFactory