这个程序就是在一个窗口上显示一个按钮,一旦鼠标移动到这个按钮上,按钮就移动到了其他位置,这样鼠标就永远无法点击到这个按钮。import java.awt.*;
import java.awt.event.*;
class MyButton extends Button
{
private MyButton friend;
public void setFriend(MyButton friend)
{
this.friend=friend;
}
public MyButton(String name)
{
super(name);
enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK);
}
protected void processMouseMotionEvent(MouseEvent e)
{
this.setVisible(false);
friend.setVisible(true);
}
}
public class TestMyButton
{
public static void main(String args[])
{
MyButton btn1=new MyButton("你来抓我呀!");
MyButton btn2=new MyButton("你来抓我呀!");
btn1.setFriend(btn2);//就是这两句
btn2.setFriend(btn1);//实现的是什么功能?
btn1.setVisible(false);//(1)这句和最后的(2),分别实现了什么功能,为什么要将bnt1隐藏两次?
Frame f=new Frame("it315");
f.add(btn1,"North");
f.add(btn2,"South");
f.setSize(300,300);
f.setVisible(true);
btn1.setVisible(false);(2)
}
}谢谢!!
import java.awt.event.*;
class MyButton extends Button
{
private MyButton friend;
public void setFriend(MyButton friend)
{
this.friend=friend;
}
public MyButton(String name)
{
super(name);
enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK);
}
protected void processMouseMotionEvent(MouseEvent e)
{
this.setVisible(false);
friend.setVisible(true);
}
}
public class TestMyButton
{
public static void main(String args[])
{
MyButton btn1=new MyButton("你来抓我呀!");
MyButton btn2=new MyButton("你来抓我呀!");
btn1.setFriend(btn2);//就是这两句
btn2.setFriend(btn1);//实现的是什么功能?
btn1.setVisible(false);//(1)这句和最后的(2),分别实现了什么功能,为什么要将bnt1隐藏两次?
Frame f=new Frame("it315");
f.add(btn1,"North");
f.add(btn2,"South");
f.setSize(300,300);
f.setVisible(true);
btn1.setVisible(false);(2)
}
}谢谢!!
btn2.setFriend(btn1);//实现的是什么功能?
---------
这两句不就是把btn1和btn2的Friend关系设置好,因为它利用两个按钮来实现这个功能,一旦鼠标到达某个按钮上,就把这个按钮隐藏,把它的friend显示出来,所以当然要设置好两个按钮的friend关系了;btn1.setVisible(false);//(1)这句和最后的(2),分别实现了什么功能,为什么要将bnt1隐藏两次?
----------
好像我把后面的一句去掉后跟没有去是一样的效果哦。
----------
PS:是不是它的程序有问题,我好像实现不了那种效果哦,
btn2.setFriend(btn1);//实现的是什么功能?
这两句就是互相关连
运行了这段代码
public void setFriend(MyButton friend)
{
this.friend=friend;
}
使得后面的操作可以在btn1上btn2的属性,在btn2上btn1的属性.
他是通过鼠标事件触发的
protected void processMouseMotionEvent(MouseEvent e)
{
this.setVisible(false);
friend.setVisible(true);
}
也就是说你点btn1时它this.setVisible(false);把自身隐藏掉,显示另一个btn2出来
点btn2时它this.setVisible(false);把自身隐藏掉,显示另一个btn1出来
这样就看起来是点不到了,实际只是被隐藏了