import java.awt.*;
import java.awt.event.*;public class MyButton extends Button
{
private MyButton MB=null;
public MyButton()
{
enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK);
}
public void setfriend(MyButton MB)
{
this.MB=MB;
}
protected void processMouseMotionEvent(MouseEvent e)
{
setVisible(false);
MB.setVisible(true);
}
}
import java.awt.*;
import java.awt.event.*;public class TestMyButton extends Frame
{
public static void main(String []args)
{
TestMyButton tmb=new TestMyButton();
MyButton mb1=new MyButton();
MyButton mb2=new MyButton();
tmb.add(mb1,"North");
tmb.add(mb2,"South");
tmb.setSize(400,400);
tmb.setVisible(true);
mb1.setfriend(mb2);//谁能给讲解下,此处为什么为死循环;
mb2.setfriend(mb1);//谁能给讲解下,此处为什么为死循环;
mb2.setVisible(false);
}
}
效果本来就是这样的啊 protected void processMouseMotionEvent(MouseEvent e)
{
setVisible(false);
MB.setVisible(true);
}
你鼠标移动到按钮后触发这个方法,这个方法的效果就是隐藏自己,显示自己指向的另一个按钮。
你在主函数中设置2个互为自己指向的对象,所以放到一个按钮上就会隐藏自己显示另一个,然后你在移动过去又是隐藏自己显示另一个,这个不是死循环,是你的操作触发的时间,你不移动鼠标去触发他是不会变。
如果是死循环的话他们应该是一直自己自动的变来变去的。
public class MyButton extends Button
{
private MyButton MB=null;
public MyButton()
{
enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK);
}
public void setfriend(MyButton MB)
{
this.MB=MB;
}
/*
* 这个方法是给自身添加Mouse事件监听,
* 当鼠标移动到当前Button时,隐藏自己,同时显示自己的内部所包含的那个Button
* 也就是在TestMyButton中的friend
*/
protected void processMouseMotionEvent(MouseEvent e)
{
setVisible(false); //隐藏自己
MB.setVisible(true); //显示自己的内部所包含的那个Button
}
}
your code...
}
或者
for(int i=0; i<1;) {
your code...
}线程死锁问题也是一种与死循环类似的问题,不过它应该不属于死循环。
看看效果怎么样!
多谢xujinfu2和巴斯藤。感谢有你们帮我解答!稍后结贴。