这个程序就是在一个窗口上显示一个按钮,一旦鼠标移动到这个按钮上,按钮就移动到了其他位置,这样鼠标就永远无法点击到这个按钮。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)
        }
}谢谢!!

解决方案 »

  1.   

    btn1.setFriend(btn2);//就是这两句
    btn2.setFriend(btn1);//实现的是什么功能?
    ---------
    这两句不就是把btn1和btn2的Friend关系设置好,因为它利用两个按钮来实现这个功能,一旦鼠标到达某个按钮上,就把这个按钮隐藏,把它的friend显示出来,所以当然要设置好两个按钮的friend关系了;btn1.setVisible(false);//(1)这句和最后的(2),分别实现了什么功能,为什么要将bnt1隐藏两次?
    ----------
    好像我把后面的一句去掉后跟没有去是一样的效果哦。
    ----------
    PS:是不是它的程序有问题,我好像实现不了那种效果哦,
      

  2.   

    btn1.setFriend(btn2);//就是这两句
    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出来
    这样就看起来是点不到了,实际只是被隐藏了
      

  3.   

    如果还是不理解,你把new MyButton()里的text换成两组不一样的.一运行就能看懂了