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();
}

}
展开
 我来答
匿名用户
2015-01-11
展开全部
java.awt.event
接口 MouseMotionListener

void mouseDragged(MouseEvent e)

鼠标按键在组件上按下并拖动时调用。在释放鼠标按键前,MOUSE_DRAGGED 事件被连续地传递到发起该拖动的组件(而不管鼠标位置是否处于该组件的边界内)。
由于拖放实现是与平台相关的,所以在本机拖放操作期间可能不传递 MOUSE_DRAGGED 事件。

void mouseMoved(MouseEvent e)
鼠标光标移动到组件上但无按键按下时调用。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式