您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> Java >> swing 动态菜单制作,先给20分,最后解决再给500分

swing 动态菜单制作,先给20分,最后解决再给500分

来源:网络整理     时间:2016/6/21 18:21:02     关键词:

关于网友提出的“ swing 动态菜单制作,先给20分,最后解决再给500分”问题疑问,本网通过在网上对“ swing 动态菜单制作,先给20分,最后解决再给500分”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: swing 动态菜单制作,先给20分,最后解决再给500分
描述:

功能如下:所谓动态,可能是菜单的文字、图片、是否可用(enable)、是否选择(selected)都随着环境变化而变化。
要求如下:
请大家给出一个解决方案,不要要代码,只要说明白就行。另外模块与模块之间耦合性尽量小,要严格考虑可扩展性。
个人说明:
一、本人已经有5年Swing经验,但是一直无法用一个较好的方法解决这个问题。当然如果你认为我很无能,我能够接受,毕竟我对这个无能为力。
二、本人准备创业,J2SE、J2ME、J2EE同吃,但是最喜欢做的就是Swing,如果有志同道合者可以联系我QQ:22530630。
自己最初的构想:
所有的菜单选项一一做成AbstractAction,然后通过配置文件来读入,但是现在遇到一个非常别扭的问题就是如何通过环境变化来控制裁断选项?
1、难道要用Observer,我认为用了Observer不利于项目的扩展。因为:如果有一天我需要Observe另外一个Subject,难道又要修改这个Subject使他变为Observable,这非常不适合设计模式的“开闭原则”。
2、重载JMenuItem#isEnabled(),大家可以试一试。我是这么做的,但是发现一个问题,这些JMenuItem显示和快捷键(Accelerator)都存在一些不正常的效果,具体的问题我无法用文字来描述,请抱歉。
希望大家能够帮忙!


解决方案1:

不太可能吧

解决方案2:

菜单我做过,但没有遇到楼主那样复杂的情况。
我觉得,真的那样复杂,可以做一个菜单的上下文context。
对于每一个菜单项,我都注册到上下文中,通过上下文我可以找到它的引用,
这样,你要控制他的状态,可以做事件模式也可以用abstractAction。
然后对于菜单,你可做一个菜单的管理类,用来加载,显示,不同的菜单项。
比如说,我要动态的控制文件菜单的退出菜单项,我只需要把退出菜单项引用拿到,然后修改其状态,然后再刷新文件菜单就可以了。
我见过我们公司的一个产品就是这样做的。
建议而已。

解决方案3:

不是特别清楚你的意思,好像没有那么麻烦
比如用户选择文本的时候Delete菜单要变成enable状态。
先得到这个Delete菜单的引用deleteMenuItem,然后调用deleteMenuItem.setEnable(true)不就可以了
至于怎么得到Delete菜单的引用,可以先得到主界面的引用,再getmenubar得到menubar,再递归查找这个menubar(根据menu的text,比如"Delete",也可以根据path[Edit|Delete])得到对应菜单的引用就可以了吧 ,这样作的前提是必须知道Delete菜单的文本,这个应该知道吧。


以上介绍了“ swing 动态菜单制作,先给20分,最后解决再给500分”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1911985.html

相关图片

相关文章