日期:2014-05-20  浏览次数:20868 次

让JFrame部分失效
我现在遇到这么一个情况,有一个JFrame窗口,上面有很多组件菜单、按钮、面板、工具栏等等。然后点击了这个窗口上的一个菜单,弹出了一个JDialog对话框,现在我需要能只对JFrame其中一个JPanel面板进行操作,也就是说让这个JDialog对话框和JFrame上的一个JPanel同时激活,其他组件包括窗口都阻塞。我有一些想法:
  1.模态化弹出对话框,在这种情况下有没有什么方法可以让其中一个JPanel不被阻塞?
  2.非模态化弹出对话框,JFrame setEnable(false),类似模态化,JFrame和其上的组件都会被阻塞,在这种情况下有没有什么方法可以让其中一个JPanel不被阻塞?
  3.非模态化弹出对话框,然后设置所有组件(除了那个JPanel)的 setEnable(false),但这样做菜单、按钮、图标等都变成灰色很难看,而且JFrame不能 setEnable(false),窗口仍可以被关闭、最大化、最小化、尺寸拖大拖小?
  大家都有什么解决方法??先谢谢大家!

------解决方案--------------------
第一二种思路不可能实现,第三种思路也不是很确定,有希望不过会让程序代码变得很怪异。
我建议楼主从设计上转换一下,不良的设计还要想靠NB的技术实现是让人很蛋疼的事情
------解决方案--------------------
没怎么用过JFrame窗口,一般都是ext或者直接用js写模态化弹出对话框

帮顶一下,祝楼主好运!要是需要js的模态化弹出对话框的话,我可以发你一份
------解决方案--------------------
探讨

没怎么用过JFrame窗口,一般都是ext或者直接用js写模态化弹出对话框

帮顶一下,祝楼主好运!要是需要js的模态化弹出对话框的话,我可以发你一份

------解决方案--------------------
加个监听器,直接隐藏面板行吗?setVisible(false),我是菜鸟不知说得靠谱不,呵呵
------解决方案--------------------
你可以看看这个项目 http://code.google.com/p/jbusycomponent/
------解决方案--------------------
lz一切皆有可能。

你说setEnable控件难看,那能不能这样处理,除了激活的JPanel和JDialog以外,其他的空间都添加一个监听,当弹出JDialog的时候,其他的mouseClick事件都直接return。