关于java鼠标监听的基础问题

比如我初始化一个3X3的网格,然后初始化其中一个上面写上“clickme”,我的目标是当我鼠标移动到这个格子的时候,这个"clickme"就自动跑到别的格子去了(这样相当... 比如我初始化一个3X3的网格,然后初始化其中一个上面写上“click me”,我的目标是当我鼠标移动到这个格子的时候,这个"click me"就自动跑到别的格子去了(这样相当于我永远点不到它)。
现在我在编程的时候在监听这个环节出问题了。 因为每次click me变换位置后,相当于我监听的网格也发生了相应的变化,而原来监听的位置要取消监听!但这具体如何做到呢。

附上我的代码:
import javax.swing.*;
import java.awt.event.*;
import java.awt.GridLayout;
public class CatchButtonGameV1 extends JFrame implements MouseListener{
JButton[] myButton = new JButton [9];
int a;

public CatchButtonGameV1 () {
this.getContentPane().setLayout(new GridLayout(3,0));
this.setTitle("Catch me if you can");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400, 400);
this.setVisible(true);

}

public static void main (String [] args) {
CatchButtonGameV1 myCatch = new CatchButtonGameV1 ();

myCatch.play();

}

public void play () {

for (int i=0; i<9; i++) {

myButton[i] = new JButton("");
this.getContentPane().add(myButton[i]);

}

a = (int)(Math.random()*9);
myButton[a].setText("Click me");

myButton[a].addMouseListener(this);

}

public void mouseEntered (MouseEvent event) {

myButton[a].setText("");
this.a = (int)(Math.random()*9);
myButton[a].setText("Click me");

}

@Override
public void mouseClicked(MouseEvent e) {

}

@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub

}

@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub

}

@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub

}

}
展开
 我来答
百度网友1fcf34c73
2013-05-01 · TA获得超过865个赞
知道小有建树答主
回答量:400
采纳率:100%
帮助的人:450万
展开全部
你这个写法有点问题,其实只要有一个button接受事件,然后不断的改变这个button所在位置就行了。
不过你既然这样写了,改的方法也容易:
然后在button的enter方法上判断当前button的title是不是 Click Me,,
1. 如果是就将title修改成空串,并随机修改另一个button的title为ClickMe;
2. 否则什么也不做
更多追问追答
追问
你好,我的这几行代码是你说的那个意思吗?我刚学java不久,不是很懂。但我现在每次还是只能监听一个位置,那个click me倒是可以每次都换,您运行下我的代码就都明白我的问题在哪了。十分感谢啊!!!
public void mouseEntered (MouseEvent event) {

myButton[a].setText("");
this.a = (int)(Math.random()*9);
myButton[a].setText("Click me");

}
追答
这段代码没问题,不过,你要把所有的button都加上监听就行了,也就是把这段代码:

myButton[a].addMouseListener(this);

改为:
for(int i = 0 ; i < 9; i++){
myButton[i].addMouseListener(this);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式