被监视器,enableEvents()搞得死去活来的-_-! 干脆就乱炖一下! //test.java package myprojects.Test; import java.awt.*; import java.awt.event.*; import java.awt.Frame; public class Test { public static void main(String[] args) { // TODO: Add your code here final MyFrame f=new MyFrame("MyFrame"); MyButton btn=new MyButton("ok"); btn.fx=f; f.btnx=btn; /* btn.addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent e){ f.dispose(); } }); */ btn.fx.add(f.btnx,"North"); btn.fx.setSize(400,400); btn.fx.setVisible(true); } } //MyFrame.java package myprojects.Test; import java.awt.Frame; import java.awt.event.*; import java.awt.*; import java.awt.Button; public class MyFrame extends Frame { MyButton btnx=null; public MyFrame(String title){ super(title); enableEvents(AWTEvent.MOUSE_EVENT_MASK); //激活鼠标事件 enableEvents(AWTEvent.WINDOW_EVENT_MASK); //激活窗口事件 //enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK); //激活鼠标移动事件 } public void processMouseEvent(MouseEvent e){ //鼠标点击窗口时关闭程序 if(e.getID()==MouseEvent.MOUSE_CLICKED){ this.dispose(); } } public void processWindowEvent(WindowEvent e){ //关闭窗口 if(e.getID()==WindowEvent.WINDOW_CLOSING){ dispose(); } } /* public void processMouseMotionEvent(MouseEvent e){ //鼠标进入窗口时btnx隐藏 btnx.setVisible(false); }*/ } 如果在A类中访问B类方法中的变量,可以在A类中创建B类型的实例。 //MyButton.java package myprojects.Test; import java.awt.Button; import java.awt.event.*; import java.awt.*; public class MyButton extends Button { MyFrame fx=null; public MyButton(String title){ super(title); enableEvents(AWTEvent.MOUSE_EVENT_MASK); } /* protected void processMouseEvent(MouseEvent e){ if(e.getID()==MouseEvent.MOUSE_ENTERED){ setVisible(false); } if(e.getID()==MouseEvent.MOUSE_EXITED){ setVisible(true); } } */ protected void processMouseEvent(MouseEvent e){ if(e.getID()==MouseEvent.MOUSE_CLICKED){ fx.dispose(); } } } 好像明白了点点,不过脑袋还是粘糊糊的感觉~~