Java:如何处理我的应用程序插件中的自定义设置?
我目前正在开发一个从其他设备接收命令的应用程序.我将提供一个接口,让其他人开发自己的传入命令的解释(插件).其他人开发的每个插件都可以具有需要由用户提供的任何自定义设置.
例如,名为“KeyboardPlugin”的插件可以支持设置以设置按键之间的延迟,但也显示要按下的所有支持键的列表.另一个插件可以是例如称为“MouseMovePlugin”,其中用户可以选择鼠标的准确度及其速度. 现在我的问题是,每个插件的设置需要是1.在UI中显示,2.在用户选择设置之后,必须将它们解析回插件以让插件知道用户选择了什么. 我正在使用Java,而UI是在Swing中开发的.有一个选项面板,显示与插件没有直接关系的选项,如常用选项.但是在同一个面板上,我想显示插件提供的设置. 插件设置如下所示: > a)“请输入两次按键之间的延迟 – > [Textbox with 如您所见,插件设置可以是例如int,boolean,string,但也可以是示例d,数组或枚举. 1)首先,我需要一种技术来询问插件的设置,好吧,我可以调用插件接口中提供的方法,但它应该返回什么?我的意思是,List可以工作但是设置选项之间没有依赖关系. 2)如何“设置插件中的设置”.如果用户选择他/她的首选设置,那么我该如何告诉插件? 到目前为止,我能想到的唯一解决方案如下: buttonDelay: boolean(false) "Enable button delay" if(buttonDelay){ buttonDelayTime: int(1,500,25) "Choose delay between buttons" } 我会将设置DSL解析为Java树,以便能够进行简单的类型检查,并使用树来生成设置UI面板. public void initPluginSettings(Map<String,SettingsInterface> settingsMap){ BooleanSetting buttonDelay = settingsMap.get("buttonDelay"); IntegerSetting buttonDelayTime = settingsMap.get("buttonDelayTime"); } 有人有更简单/更聪明的解决方案吗?或者这个问题有一些模式吗?我已经在网上搜索了但我找不到任何东西.要实现DSL,使用树来键入检查等对我来说这个问题似乎有点“太多”.我的意思是,我可以做到这一点但我希望在开始之前得到其他人的建议. 先感谢您! 解决方法
怎么样的东西:
interface Plugin { Map<String,String> getSettingsList(); getPossibleValuesFor(String key); setValue(String key,.. value); .. getValue(); } getSettingsList()将返回从键到类型的映射; getPossibleValuesFor()是这样的,所以插件开发人员可以限制类型的默认范围或强加设置之间的依赖关系.然后为它添加持久性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 基于SSM框架的JAVA会员卡管理系统
- java-如何在不使用比较器和比较器接口的情况下对地图进行排
- java – Jax-ws,spring和SpringBeanAutowiringSupport
- Jenkins安装以及邮件配置详解
- java – JAXB:如何注释类,使其属于不同的命名空间?
- springmvc4+hibernate4分页查询功能实现
- java.lang.IllegalStateException:在提交响应后无法调用se
- GWT测试错误NoClassDefFoundError:com / google / gwt / d
- spring boot自带图片服务器使用详解
- Java的文档注释之生成帮助文档的实例