黑马程序员技术交流社区

标题: 张老师GUI视频中的一点疑问 [打印本页]

作者: 李龙涛    时间: 2011-7-28 15:53
标题: 张老师GUI视频中的一点疑问
import java.awt.*;
import java.awt.event.*;
public class MyButton extends Button {
private MyButton friend=null;
public void setFriend(MyButton friend)
{
  this.friend=friend;
}
public MyButton(String title){
  super(title);
  enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK);
}
protected void processMouseMotionEvent(MouseEvent e){
  setVisible(false);
  friend.setVisible(true);
}
}

import java.awt.*;
import java.awt.event.*;
public class TestMyButton extends Frame{
public TestMyButton()
{
  addWindowListener(new WindowAdapter(){
   public void windowClosing(WindowEvent e){
    dispose();
    System.exit(0);
   }
  });
}
    public static void main(String[] args) {
     // TODO, add your application code
     System.out.println("running TestMyButton!");
     TestMyButton mainFrame=new TestMyButton();
     MyButton btn1=new MyButton("你来抓我啊1");
     MyButton btn2=new MyButton("你来抓我啊2");
     btn1.setFriend(btn2);
     btn2.setFriend(btn1);


  mainFrame.add(btn1,"North");
  mainFrame.add(btn2,"South");
     mainFrame.setSize(400,400);
     mainFrame.setVisible(true);
     mainFrame.setTitle("TestMyButton");
     btn1.setVisible(false);
    }
}
这其中的
private MyButton friend=null;
public void setFriend(MyButton friend)
{
  this.friend=friend;
}



     btn1.setFriend(btn2);
     btn2.setFriend(btn1);

的作用不是很理解为什么要这么做有什么作用吗?
如果我理解为这样设置是为了共同调用protected void processMouseMotionEvent(MouseEvent e){
  setVisible(false);
  friend.setVisible(true);
}

这个方法?这么理解对吗?

望高手指教


[ 本帖最后由 李龙涛 于 2011-07-28  16:01 编辑 ]
作者: 匿名    时间: 2011-7-28 16:41
我也觉得可以这么想…就是两个按钮鼠标移动过去的时候调用这个方法。两个人循环调用…不过是各自调用各自的,只是前一个让另一个按钮显示,后一个的监听方法才有效…
作者: 王松朝    时间: 2011-7-28 17:59
我的理解是:居部变量私有化,为了安全;变量不固定是为了扩展方便,比如再加button,是一种编程思想;
至于监听鼠标事件…我估计张老师写代码的时候都没想这么多…编程N久都成习惯了…




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2