java 同时多个监听事件的问题
如题,为了大牛方便理解我的意思,专门简化了一下不必要的代码贴在了下面,求解决啊packagetest;importjava.awt.Frame;importjava.aw...
如题,为了大牛方便理解我的意思,专门简化了一下不必要的代码贴在了下面,求解决啊
package test;
import java.awt.Frame;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Main extends Frame
{
/**
* 标记窗体是否被按下
*/
private boolean mainIsPressed;
/**
* 构造方法创建一个窗体
*/
public Main()
{
super("java程序测试");
this.setBounds(200,200,200,200);
this.setVisible(true);//可见
this.setResizable(false);//可调整大小
this.addWindowListener(//关闭监听事件
new WindowAdapter()//匿名内部类
{
@Override
public void windowClosing(WindowEvent e)
{
System.exit(0);//退出
}
}
);
this.addMouseListener(
new MouseAdapter()
{
@Override
public void mousePressed(MouseEvent e)//鼠标按下时间监听
{
mainIsPressed=true;
}
@Override
public void mouseReleased(MouseEvent e)//鼠标释放时间监听
{
mainIsPressed=false;
}
}
);
this.addMouseMotionListener(
new MouseMotionAdapter()
{
@Override
public void mouseMoved(MouseEvent e)//鼠标移动时间监听
{
System.out.println("鼠标移动");//这里就有问题了,当鼠标按下的时候根本就不输出鼠标移动
if(mainIsPressed==true)
{
System.out.println("同时按下和移动鼠标");
}
}
}
);
}
/**
* 程序入口点
* @param args
*/
public static void main(String[] args)
{
System.out.println("=======开始========");
Main frame = new Main();
}
} 展开
package test;
import java.awt.Frame;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Main extends Frame
{
/**
* 标记窗体是否被按下
*/
private boolean mainIsPressed;
/**
* 构造方法创建一个窗体
*/
public Main()
{
super("java程序测试");
this.setBounds(200,200,200,200);
this.setVisible(true);//可见
this.setResizable(false);//可调整大小
this.addWindowListener(//关闭监听事件
new WindowAdapter()//匿名内部类
{
@Override
public void windowClosing(WindowEvent e)
{
System.exit(0);//退出
}
}
);
this.addMouseListener(
new MouseAdapter()
{
@Override
public void mousePressed(MouseEvent e)//鼠标按下时间监听
{
mainIsPressed=true;
}
@Override
public void mouseReleased(MouseEvent e)//鼠标释放时间监听
{
mainIsPressed=false;
}
}
);
this.addMouseMotionListener(
new MouseMotionAdapter()
{
@Override
public void mouseMoved(MouseEvent e)//鼠标移动时间监听
{
System.out.println("鼠标移动");//这里就有问题了,当鼠标按下的时候根本就不输出鼠标移动
if(mainIsPressed==true)
{
System.out.println("同时按下和移动鼠标");
}
}
}
);
}
/**
* 程序入口点
* @param args
*/
public static void main(String[] args)
{
System.out.println("=======开始========");
Main frame = new Main();
}
} 展开
1个回答
2015-01-11
展开全部
java.awt.event
接口 MouseMotionListener
void mouseDragged(MouseEvent e)
鼠标按键在组件上按下并拖动时调用。在释放鼠标按键前,MOUSE_DRAGGED 事件被连续地传递到发起该拖动的组件(而不管鼠标位置是否处于该组件的边界内)。
由于拖放实现是与平台相关的,所以在本机拖放操作期间可能不传递 MOUSE_DRAGGED 事件。
void mouseMoved(MouseEvent e)
鼠标光标移动到组件上但无按键按下时调用。
接口 MouseMotionListener
void mouseDragged(MouseEvent e)
鼠标按键在组件上按下并拖动时调用。在释放鼠标按键前,MOUSE_DRAGGED 事件被连续地传递到发起该拖动的组件(而不管鼠标位置是否处于该组件的边界内)。
由于拖放实现是与平台相关的,所以在本机拖放操作期间可能不传递 MOUSE_DRAGGED 事件。
void mouseMoved(MouseEvent e)
鼠标光标移动到组件上但无按键按下时调用。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询