如何让JavaFX Spinner触达最值时循环切换数值范围?
JavaFX Spinner实现循环数值切换的简便方法
不用手动监听箭头点击事件,JavaFX的SpinnerValueFactory内置了wrapAround属性,直接开启就能实现你要的循环效果:
- 当数值为最小值(1)时,按下向下箭头自动切换到最大值(5)
- 当数值为最大值(5)时,按下向上箭头自动切换到最小值(1)
实现代码
有两种常用写法,效果完全一致:
写法1:直接创建Spinner后配置
// 初始化Spinner,设置最小、最大、初始值 Spinner<Integer> spinner = new Spinner<>(1, 5, 3); // 开启循环切换 spinner.getValueFactory().setWrapAround(true);
写法2:先配置SpinnerValueFactory再创建Spinner
// 创建数值工厂并配置参数 SpinnerValueFactory<Integer> valueFactory = new SpinnerValueFactory.IntegerSpinnerValueFactory(1, 5, 3); // 开启循环 valueFactory.setWrapAround(true); // 绑定到Spinner Spinner<Integer> spinner = new Spinner<>(valueFactory);
说明
wrapAround是SpinnerValueFactory的布尔类型属性,默认值为false。设置为true后,Spinner会自动处理边界值的循环切换,无需额外编写事件监听逻辑,完全满足你的需求。
内容的提问来源于stack exchange,提问作者Jakub
相关产品推荐
相关产品推荐

