博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jface databinding: Radio Button group及ISideEffect绑定数据对象的例子
阅读量:2172 次
发布时间:2019-05-01

本文共 2156 字,大约阅读时间需要 7 分钟。

下图左侧是三个Radio button,设计的要求是选择不同的radio button,右侧的三个group会分别有不同的可见状态(visible),并且将radio button状态与数据对象绑定

这里写图片描述

下面是用来实现数据绑定,并在ISideEffect的帮助下完成右边三个组件的可见状态控制。

// 创建SelectObservableValue 对象        SelectObservableValue selectedRadioButtonObservable = new SelectObservableValue();        // 分别将左侧三个Radio Button加入SelectObservableValue ,并指定当其实被选中时SelectObservableValue 对象的Value(如ImageSoureConfig.Type.FILE)        selectedRadioButtonObservable.addOption(ImageSoureConfig.Type.FILE, WidgetProperties.selection().observe(this.btnSourceFolder));        selectedRadioButtonObservable.addOption(ImageSoureConfig.Type.FILE_WITH_FACE, WidgetProperties.selection().observe(this.btnSourceFolderByDetect));        selectedRadioButtonObservable.addOption(ImageSoureConfig.Type.DB, WidgetProperties.selection().observe(this.btnSourceDb));        // 将SelectObservableValue 的value与数据对象type绑定        // observablesourceConfig对象类型参见本文附参考资料中的《jface databinding:部分实现POJO对象的监测》        observablesourceConfig.bindValue(selectedRadioButtonObservable, "type");        // 调用ISideEffect.create实现右侧三个组件的可见状态控制        ISideEffect.create(                // lambda表达,返回selectedRadioButtonObservable的值                selectedRadioButtonObservable::getValue,                        // lambda表达式                        (type)->{                                       // 根据selectedRadioButtonObservable的值来控制右侧三个组件的可见状态控制                    switch((ImageSoureConfig.Type)type){                    case FILE:                        groupFolder.setVisible(true);                        groupDetect.setVisible(false);                        groupDb.setVisible(false);                        break;                    case FILE_WITH_FACE:                        groupFolder.setVisible(true);                        groupDetect.setVisible(true);                        groupDb.setVisible(false);                        break;                    case DB:                        groupFolder.setVisible(false);                        groupDetect.setVisible(false);                        groupDb.setVisible(true);                        break;                    }                });

关于ISideEffect的介绍参见我上一篇博客

参考资料:

你可能感兴趣的文章
判断数据的JS代码
查看>>
js按键事件说明
查看>>
AJAX 初次体验!推荐刚学看这个满好的!
查看>>
AJAX 设计制作 在公司弄的 非得要做出这个养的 真晕!
查看>>
Linux 查看文件大小
查看>>
Java并发编程:线程池的使用
查看>>
redis单机及其集群的搭建
查看>>
Java多线程学习
查看>>
检查Linux服务器性能
查看>>
Java 8新的时间日期库
查看>>
Chrome开发者工具
查看>>
【LEETCODE】102-Binary Tree Level Order Traversal
查看>>
【LEETCODE】106-Construct Binary Tree from Inorder and Postorder Traversal
查看>>
【LEETCODE】202-Happy Number
查看>>
和机器学习和计算机视觉相关的数学
查看>>
十个值得一试的开源深度学习框架
查看>>
【LEETCODE】240-Search a 2D Matrix II
查看>>
【LEETCODE】53-Maximum Subarray
查看>>
【LEETCODE】215-Kth Largest Element in an Array
查看>>
【LEETCODE】241-Different Ways to Add Parentheses
查看>>