我正在创建一个 6x6 网格记忆游戏。它的要求是使用面板中的图像作为按钮的替代品。
210×70
该项目需要在以下条件下实现 MouseListeners: 按钮将显示第一个 pokebell。当鼠标悬停在精灵球上时,它会变成第二个精灵球。当鼠标离开精灵球时,它会恢复到第一个精灵球。当鼠标点击精灵球时,它会变成第三个精灵球。
网格鼠标事件
public void mouseEntered(MouseEvent e) {
for(i = 0; i < 36; i++){
if(e.getSource() == pkm[i]){
pkb[i].repaint();
}
}
}
public void mouseExited(MouseEvent e) {
for(i = 0; i < 36; i++){
if(e.getSource() == pkm[i]){
pkb[i].repaint();
}
}
}
精灵球类
int start = 0;
int ht = 0, wt = 0;
URL url;
BufferedImage img, sp1;
public PokeBall(String imgLink, int w, int h, int x){
wt = w;
ht = h;
start = x;
url = this.getClass().getResource(imgLink);
try{
img = ImageIO.read(url);
}
catch(Exception e){
}
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
sp1 = img.getSubimage(start, 0, wt, ht);
g2d.drawImage(sp1,20,10,null);
if(start == 70) {
start = 0;
}
else {
start += 70;
}
}
我的想法是精灵的变化将在相应的鼠标事件上被调用,但是即使鼠标没有调用任何事件,我也让整个 pokeball 在无限循环中进行动画处理。
我需要一些关于如何阻止它自行循环并实际调用指定 pokeball 的想法或建议。