java 点击打开 再点击关闭_java 怎么解决 点击一次打开一个 我只想开一个窗口!!...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

问题很多啊!

首先是命名规范的问题。你们的JAVA都是自学的?你们老师就没告诉过你们用汉语拼音来命名是大忌?

Quanpingxianshi Kd Cd An,这种名字 一看就让人反胃,含义全靠猜,全拼的名字还能猜一猜,那种写成拼音首字母缩写的根本猜都猜不了。要记住,代码是写给人看的,所以变量、类名、方法名都应该是一目了然,让人一眼看见就知道含义的,绝对不要用汉语拼音(可别是首字母缩写),或者是abc这种没有含义的字母让人猜,不写汉语拼音还有一个原因是看你代码的不一定是中国人。我之前在一个人新手的帖子里给他指出了这个问题。结果他(估计是学生,实际做过开发的不可能这样)还振振有词的说他写的很好,说我教条,形式主义,真TM的不爽,以前不理解为什么我朋友管学编程的大学生叫小学生,这回算是领教了。

不好意思扯远了,说说你的代码,

if(e.getSource()==an1)

{

if(an1==null){

System.out.println("窗口打开");

}else{

}

这段,首先,你既然else里没东西,你还写else干什么?直接省略了呗!

然后,你上面都做了e.getSource()==an1的判断了,那么an1就不可能是null,也就是说你的 if(an1==null)写的意义不明,完全没有必要。

你按一下出一个窗口是因为你每按一下按钮,就会触发一次观察方法,执行一句

QuanPingXianShi_3 fm= new QuanPingXianShi_3();

按多下当然就会出多个对话框了。

解决起来也很简单,

最好的办法是,让QuanPingxianshi_3继承JDialog而不是JFrame,然后让封装JDialog的

JDialog(Frame owner)构造方法为QuanPingxianshi_3(Frame owner),然后new的时候把QuanPingxianshi_1做为owner参数传给他,这样,当QuanPingXianShi_3被new出来显示出来后QuanPingxianshi_1就会被阻塞,按钮就点不了了。

也可以用楼上所说的单例模式,即把QuanPingXianShi_3 fm写成成员变量而不是方法里的局部变量。

或者按我之前所说的,也是把QuanPingXianShi_3 fm写成成员变量,然后在执行观察响应时判断看fm是不是null,是null才new个新的,不是则直接丢弃这次操作,就是

if(fm==null){

fm = new QuanPingXianShi_3();

}else{

return;

}

这样写要注意,在点QuanPingXianShi_3中的确定或取消按钮时要把fm置成空,也就是fm = null;

因此,在QuanPingXianShi_3中应该持有QuanPingXianShi_1的引用,也就是上述代码应该写成

if(fm==null){

fm = new QuanPingXianShi_3(this);

}else{

return;

}

然后在QuanPingXianShi_3类中写一个QuanPingXianShi_1 quanpingxianshi_1 =null的成员属性,然后在QuanPingXianShi_3的构造函数中把它当前QuanPingXianShi_1,也就是这里的this,赋值给quanpingxianshi_1以备调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值