来人啊?

qq_37171619 2017-07-07 04:12:58
public class ButtonListener implements ActionListener {
static int click = 1;
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JButton b1 = null;
JButton b2 = null;

if (click % 2 == 0) {
b2 = (JButton) e.getSource();
} else {
b1 = (JButton) e.getSource();
}
click++;
if (b2 == null) {
return;
}
if (b1.getIcon() == b2.getIcon()) {
b1.setVisible(false);
b2.setVisible(false);
}
}
}

我为每个button都添加这个监听器,为什么点两个相同图片的button消不掉啊?
...全文
215 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaovhao 2017-07-09
  • 打赏
  • 举报
回复
引用 2 楼 qq_37171619 的回复:
[quote=引用 1 楼 u014038116 的回复:] 你的b1,b2都是局部变量,每次点击都只会实例化一个,当你点击为偶数的时候应该是会报错的啊
确实异常了,这怎么搞啊?[/quote] 不要声明为局部变量就可以了,然后你判等的方式也不正确,getIcon是返回的是一个icon对象,不能直接用==判断,我记得b1.getIcon().toString()是会返回图标名称的,你用这个判断好了b1.getIcon().toString().equals(b2.getIcon().toString())
qq_37171619 2017-07-08
  • 打赏
  • 举报
回复
引用 3 楼 sunquan291 的回复:
click偶数是 b2 = (JButton) e.getSource(); 但b1还是为null b1.getIcon()会指针异常 这代码真是好怪异的设计。。。
改了下:
public class ButtonListener implements ActionListener {
	static int click = 1;

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		JButton b1 = null;
		JButton b2 = null;

		if (click % 2 == 0) {
			b2 = (JButton) e.getSource();
		} else {
			b1 = (JButton) e.getSource();
		}
		click++;
		if (b2 == null) {
			return;
		} else {
			if (b1.getIcon() == b2.getIcon()) {
				b1.setVisible(false);
				b2.setVisible(false);
			}
		}
	}
}
还是报错啊,觉得没错啊。
加权不平权 2017-07-08
  • 打赏
  • 举报
回复
click偶数是 b2 = (JButton) e.getSource(); 但b1还是为null b1.getIcon()会指针异常 这代码真是好怪异的设计。。。
qq_37171619 2017-07-08
  • 打赏
  • 举报
回复
没人吗?
qq_37171619 2017-07-08
  • 打赏
  • 举报
回复
package function;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

import ui.MyFrame;


public class ButtonListener implements ActionListener {
	
	static int click = 1;
	static JButton b1 = null;
	static JButton b2 = null;
	
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		

		if (click % 2 == 0) {
			b2 = (JButton) e.getSource();
		} else {
			b1 = (JButton) e.getSource();
		}
		click++;
		if (b2 == null) {
			return;
		} else {
			if (b1.getIcon() == b2.getIcon()) {
				b1.setVisible(false);
				b2.setVisible(false);
			}
		}
	}
}
现在不报错了,但是点两个图片消不掉,第一个图片2次消掉了
qq_37171619 2017-07-07
  • 打赏
  • 举报
回复
引用 1 楼 u014038116 的回复:
你的b1,b2都是局部变量,每次点击都只会实例化一个,当你点击为偶数的时候应该是会报错的啊
确实异常了,这怎么搞啊?
xiaovhao 2017-07-07
  • 打赏
  • 举报
回复
你的b1,b2都是局部变量,每次点击都只会实例化一个,当你点击为偶数的时候应该是会报错的啊

62,621

社区成员

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

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