A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李龙涛   /  2011-7-28 15:53  /  2395 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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 编辑 ]

2 个回复

倒序浏览
黑马网友  发表于 2011-7-28 16:41:22
沙发
我也觉得可以这么想…就是两个按钮鼠标移动过去的时候调用这个方法。两个人循环调用…不过是各自调用各自的,只是前一个让另一个按钮显示,后一个的监听方法才有效…
回复 使用道具 举报
我的理解是:居部变量私有化,为了安全;变量不固定是为了扩展方便,比如再加button,是一种编程思想;
至于监听鼠标事件…我估计张老师写代码的时候都没想这么多…编程N久都成习惯了…
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马