JavaFX Integer Spinner(IntegerSpinnerValueFactory)不会将值包装到最小值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaFX Integer Spinner(IntegerSpinnerValueFactory)不会将值包装到最小值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1888字,纯文字阅读大概需要3分钟。
内容图文
![JavaFX Integer Spinner(IntegerSpinnerValueFactory)不会将值包装到最小值](/upload/InfoBanner/zyjiaocheng/782/f034d71a9ca44d1b88c4a969e52956e4.jpg)
我创建了一个带有值的Integer Spinner
min(5),max(15)和initialValue(12)以及wrapAround(true).
一旦微调器在增量期间达到max(15)值,而不是像在documentation中所说的那样将值重置为min(5),它将被重置为值10(max(15) – min(5))
public final void setWrapAround?(boolean value)
Sets the value of the property wrapAround.
Property description:
The wrapAround property is used to specify whether the value factory should be circular. For example, should an integer-based value model increment from the maximum value back to the minimum value (and vice versa).
注意:递减工作正常,一旦达到min(5)值,Spinner值自动设置为max(15)
public class IntSpinnerTest extends Application
{
@Override
public void start(Stage stage) throws Exception
{
var spinner = new Spinner<Integer>();
var factory = new SpinnerValueFactory.IntegerSpinnerValueFactory(5, 15, 12);
factory.setWrapAround(true);
spinner.setValueFactory(factory);
stage.setScene(new Scene(new BorderPane(spinner), 400, 200));
stage.setTitle("IntSpinnerTest");
stage.centerOnScreen();
stage.show();
}
public static void main(String[] args)
{
launch(args);
}
}
解决方法:
这是一个已知的错误:JDK-8193286.提交者包含一个变通方法 – 继承IntegerSpinnerValueFactory:
package sample;
import javafx.scene.control.SpinnerValueFactory.IntegerSpinnerValueFactory;
public final class IntSpinnerValueFactory extends IntegerSpinnerValueFactory {
public IntSpinnerValueFactory(final int min, final int max) {
super(min, max);
}
public IntSpinnerValueFactory(final int min, final int max, final int initialValue) {
super(min, max, initialValue, 1);
}
@Override
public void increment(final int steps) {
final int min = getMin();
final int max = getMax();
final int currentValue = getValue();
final int newIndex = currentValue + steps * getAmountToStepBy();
setValue(newIndex <= max ? newIndex : (isWrapAround() ? (newIndex - min) % (max - min + 1) + min : max));
}
}
注意:根据建议略微修改了变通方法.
内容总结
以上是互联网集市为您收集整理的JavaFX Integer Spinner(IntegerSpinnerValueFactory)不会将值包装到最小值全部内容,希望文章能够帮你解决JavaFX Integer Spinner(IntegerSpinnerValueFactory)不会将值包装到最小值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。