选择的按钮:将ToggleButtons用作单选按钮
对于MQTT.fx,我想使用ToggleButtons例如选择MQTT消息或QoS级别的解码:
我发现在ToggleGroup的上下文中,ToggleButton在选择/取消选择方面的行为与RadioButtons不同:与RadioButtons不同,ToggleButtons仍可以设置为未选中状态。
RadioButton扩展了ToggleButton并覆盖了fire()(当用户手势指示该ButtonBase
的事件应该又称为“单击按钮”时发生时,将调用此方法):
单选按钮:
@Override public void fire() {// we don't toggle from selected to not selected if part of a groupif (getToggleGroup() == null || !isSelected()) {super.fire();}
}
切换按钮:
@Override public void fire() {setSelected(!isSelected());fireEvent(new ActionEvent());
}
在ToogleGroup中,ToggleButton的行为应类似于RadioButtons,所以恕我直言,这是一个值得对ToggleButton��进行拉取请求的错误。
解决此问题的一种方法是确保创建一个ToggleButton的自定义扩展,以实现与RadioButton有关的fire()。
但是我更喜欢将行为添加到现有控件中。
这是我的修改方式,可以通过向使用了不需要的MouseEvent的ToggleGroup的所有ToogleButtons添加过滤器来修改默认行为:
public class JavaFXUtil {private static JavaFXUtil me;private JavaFXUtil() {}public static JavaFXUtil get() {if (me == null) {me = new JavaFXUtil();}return me;}public EventHandler<MouseEvent> consumeMouseEventfilter = (MouseEvent mouseEvent) -> {if (((Toggle) mouseEvent.getSource()).isSelected()) {mouseEvent.consume();}};public void addAlwaysOneSelectedSupport(final ToggleGroup toggleGroup) {toggleGroup.getToggles().addListener((Change<? extends Toggle> c) -> {while (c.next()) {for (final Toggle addedToggle : c.getAddedSubList()) {addConsumeMouseEventfilter(addedToggle);}}});toggleGroup.getToggles().forEach(t -> {addConsumeMouseEventfilter(t);});}private void addConsumeMouseEventfilter(Toggle toggle) {((ToggleButton) toggle).addEventFilter(MouseEvent.MOUSE_PRESSED, consumeMouseEventfilter);((ToggleButton) toggle).addEventFilter(MouseEvent.MOUSE_RELEASED, consumeMouseEventfilter);((ToggleButton) toggle).addEventFilter(MouseEvent.MOUSE_CLICKED, consumeMouseEventfilter);}}
public class ButtonDemoController {@FXMLprivate ToggleGroup g2;@FXMLprivate ToggleGroup g3;public void initialize() {JavaFXUtil.get().addAlwaysOneSelectedSupport(g2);JavaFXUtil.get().addAlwaysOneSelectedSupport(g3);}}
GitHub上的示例代码。
翻译自: https://www.javacodegeeks.com/2016/04/button-choice-use-togglebuttons-radiobuttons.html
选择的按钮:将ToggleButtons用作单选按钮相关推荐
- 单选按钮:after_选择的按钮:将ToggleButtons用作单选按钮
单选按钮:after 对于MQTT.fx,我想使用ToggleButtons例如选择MQTT消息或QoS级别的解码: 我发现在ToggleGroup的上下文中,ToggleButton在选择/取消选择 ...
- webuploader在bootstrap模态对话框中选择文件按钮无效的问题
搜了很多,网上主要的说法是 当一个元素是hidden时,addbutton绑定是会失败的,所以单击选择文件按钮就无效了 而bootstrap模态框一开始是隐藏的,因此必须在其显示完毕后才可以初始化we ...
- WIndows10系统解决“选择电源按钮的功能”中没有休眠选项
这是我之前遇到过一个很绝的问题,用过休眠的都知道好用,但是在我有一次更新了Windows系统后本来设置好的休眠选项就没有了,就连设置的"选择电源按钮的功能"也没有这个选项,就是这个 ...
- php按钮打开文件选择框,在Select file(选择)页面单击Select file(选择文件)按钮
第1步,运行WordFix,并单击"Start(开始)"按钮,如图所示. 第2步,进入Word文档恢复向导,在"Select file(选择)"页面单击&quo ...
- 用java的事件监听机制实现一个简单的画板应用:通过选择图形按钮和颜色按钮来画出自己想画的图形:直线、空心矩形、圆形、折线、多边形、圆角矩形、弧线、曲线、喷枪
今天做一个简单的画板,完整代码附在文章末尾处. - 功能:通过选择图形按钮和颜色按钮来画出自己想画的图形. - 界面展示: - 思路: 1.做一个可视化界面:创建JFrame对象,并设置Title.S ...
- win10休眠按钮在“选择电源按钮功能”配置中找不到
问题: Win10 想开启休眠模式,当按照常规设置,在"选择电源按钮功能"配置界面,却没有找到 可勾选的"休眠"按钮[见参考]. 解决: 1. 点WIND ...
- 选择屏幕——按钮、单选复选框
12.6. 按钮.单选复选框.下拉框的FunCode 如果复选框与单选按钮没有设置Function Code,则它们就会像普通的输入框一样,即使状态发生了改变,也不会触发PAI事件 对话屏幕中 ...
- JQuery/JS select标签动态设置选中值、设置禁止选择 button按钮禁止点击 select获取选中值...
//**1.设置选中值:(根据索引确定选中值)**// var osel=document.getElementById("selID"); //得到select的IDvar op ...
- 隐藏标准选择界面按钮
适用于更改报表标准选择界面的GUI状态(GUI_STATUS ),或者隐藏标准GUI状态的某些按钮. 比如,要隐藏执行和保存变式按钮. 隐藏前: 隐藏后: 还可以添加自己的按钮: 程序:
最新文章
- VUE 事件获取当前组件的属性
- WinCE文件目录定制
- 【LeetCode从零单排】No102 Binary Tree Level Order Traversal
- 如何重置云服务器系统
- 测试Spring Boot有条件的合理方式
- 怎么用PHP修改文字大小,如何利用PHP和CSS改变网页文字大小
- linux 内核系统优化,Linux高并发应用类型对系统内核的优化
- 利用Javascript判断操作系统的类型
- js动态创建元素和删除
- (libgdx学习)Continuous non continuous rendering
- 【Android】Lenovo K860 framework-res.apk回编译失败解决办法
- 造假家族覆灭记:警方联合阿里斩断涉案三千万假耐克产销链
- android 计步功能原理,Android开发——计步功能
- 计算机网络智能小区综合分布线系统的总结,智能楼宇综合布线的系统设计方案.doc...
- TCP交互式游戏《基于TCP的C/S程序设计》
- linux ubantu最新版本,过去十年最佳的Ubuntu版本
- Warning: To load an ES module, set “type“: “module“ in the package.json or use the .mjs extension.
- 小米android通知栏图标不显示,MIUI开发版更新:已修复原生样式下部分通知图标不显示的问题...
- input range: vue自定义进度条
- 蓝桥杯--历届真题 最优包含【第十届】【决赛】【B组】
热门文章
- jstl中添加自定义的函数
- 19级:班级日常分享,一天一瞬间
- 深入C#中的String类
- ssh(Spring+Spring mvc+hibernate)——EmpServiceImpl.java
- 2017蓝桥杯省赛---java---B---9(分巧克力)
- 2018蓝桥杯省赛---java---B---2(方格计数)
- win10系统excel2019单元格显示完整的年月日时分秒设置方法
- Java内存区域(运行时数据区域)和内存模型(JMM)
- 微信小程序定时器setInterval()的使用注意事项
- hibernate教程_Hibernate多对多教程