如何在 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 中做同样的事情?
长话短说,你做不到!
原因
- 微调器未设计为采用 null 值。微调器将 原始数据类型 作为参数并在内部调用 SpinnerValueFactory 其构造函数再次接受原始数据类型。 不能将 null 传递给原始类型。
- 即使您定义了
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。
我正在尝试制作一个数字 Spinner
。我不想定义最大值。下面的代码给我一个错误,因为 Spinner(int min, int max, int initalValue)
不接受空值。
Spinner<Integer> spinner = new Spinner<Integer>(1, null, 1);
在 Swing 中,我可以为此传递 null 值,我如何在 JavaFX 中做同样的事情?
长话短说,你做不到!
原因
- 微调器未设计为采用 null 值。微调器将 原始数据类型 作为参数并在内部调用 SpinnerValueFactory 其构造函数再次接受原始数据类型。 不能将 null 传递给原始类型。
- 即使您定义了
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。