JFrame显示

jincheng2008 2009-08-20 10:59:24
我设计的程序里的Bug:
触发一个事件的时候调用一个JFrame!
如点击该学生信息时当多次触发这个事件,就调用同一个JFrame并显示多个该学生界面。
如何屏蔽这样的问题。
如果该JFrame已显示,不再调用显示同一界面。
...全文
121 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
shmilycharlene 2009-08-20
  • 打赏
  • 举报
回复
在你调用该JFrame对象的setVisible()之前检查 该对象是否为null,调用isDisposed()方法检查是否已经被Dispose掉了.,并调用isVisible()检查是否已经可见.通过以上的检查,分不同的情况来处理,完全可以解决你的问题.

同时说下我没有推荐JDialog,设置模态的方式.有时候我们需要同时显示多个不同的人的时候.如果被设置为了模态,那么就没有办法了
j1223jesus 2009-08-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 virginkj 的回复:]
LZ为什么不使用JDialog?效果应该可以做到和你的JFrame一样 因为JDialog和JFrame是同一级的容器 而且JDialog在关闭当前这个时 是不能再去打开其他的JDialog的
[/Quote]
同感,设置dialog的模态,可以解决那个问题
土地公公 2009-08-20
  • 打赏
  • 举报
回复
我的想法是定义一个ID,如:public static final String ID = JFrame.class.getName();
然后调用这个JFrame时,先根据ID拿到这个JFrame对象,若为空,则show(),否则dipose()。
virginkj 2009-08-20
  • 打赏
  • 举报
回复
LZ为什么不使用JDialog?效果应该可以做到和你的JFrame一样 因为JDialog和JFrame是同一级的容器 而且JDialog在关闭当前这个时 是不能再去打开其他的JDialog的
猿敲月下码 2009-08-20
  • 打赏
  • 举报
回复
先把所有的窗体类名添加到一个Map中:
下面是一个JInternalFrame例子,希望对你有所启发,包com.mycompany.internalframe内有许多JInternalFrame窗体
// 获取内部窗体的唯一实例对象
private JInternalFrame getIFrame(String frameName) {
JInternalFrame jf = null;
if (!ifs.containsKey(frameName)) {
try {
Class fClass = Class.forName("com.mycompany.internalframe."
+ frameName);
Constructor constructor = fClass.getConstructor(null);
jf = (JInternalFrame) constructor.newInstance(null);
ifs.put(frameName, jf);
} catch (Exception e) {
e.printStackTrace();
}
} else
jf = ifs.get(frameName);
return jf;
}
charllyonly 2009-08-20
  • 打赏
  • 举报
回复
打开之前先判断JFrame对象是不是null,是null再打开

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧