实现鼠标事件的响应

实现鼠标事件的响应_第1张图片
白猫代表好运.JPG

Java提供了处理鼠标事件的两个监听器接口: MouseListener 和 MouseMotionListener。
1)MouseListener 接口监听鼠标的按下、松开、进入、退出和点击等行为;
2)MouseMotionListener 接口监听鼠标的移动和拖动等行为;

当鼠标进入或离开组件时调用mouseEntered(MouseEvent e)和mouseExit(MouseEvent e)事件处理器。
当鼠标按下或松开时调用mousePressed(MouseEvent e)和mouseReleased(MouseEvent e)事件处理器。而当按下鼠标并松开后,调用mouseClicked(MouseEvent e)事件处理器。
当不按按钮移动鼠标时调用mouseMoved(MouseEvent e)事件处理器,当按下按钮移动鼠标时调用mouseDragged(MouseEvent e)事件处理器。
例:下面实现在面板上按住鼠标左键移动鼠标,就可以绘画,按住右键移动,就可以擦去所画的东西。
实现效果如图:
demo2为移动右键实现“画图”的效果
demo1为移动左键实现“擦拭”的效果


实现鼠标事件的响应_第2张图片
demo2.png

实现鼠标事件的响应_第3张图片
demo1.png
代码如下:
package Ranr;
import java.awt. ;
import javax.swing.
;
import java.awt.event.*;
public class ScribbleDemo extends JFrame implements MouseListener, MouseMotionListener
{

Point lineStart=new Point(0,0);
ScribbleDemo(){
    this.addMouseListener(this);  
    this.addMouseMotionListener(this);

}
public void mousePressed(MouseEvent e)
{

}
public void mouseReleased(MouseEvent e)
{
    lineStart.move(e.getX(),e.getY()); 

}
public void mouseClicked(MouseEvent e)
{
    
}
public void mouseEntered(MouseEvent e)
{
    
}
public void mouseExited(MouseEvent e)
{
    
}
public void mouseDragged(MouseEvent e)
{
    Graphics g=getGraphics();
    if (e.isMetaDown()) //  检测鼠标右键单击
    {
            g.setColor(Color.black);
        g.drawLine(lineStart.x, lineStart.y,e.getX(), e.getY());
            lineStart.move(e.getX(), e.getY());
    }
else   // 检测鼠标左键单击
    {
        g.setColor(getBackground());
            g.fillOval(e.getX() - (20/2),e.getY() - (20/2), 20, 20);
    }
    g.dispose();   
}
public void mouseMoved(MouseEvent e)
{
    
}
public static void main(String[] args)
{
    ScribbleDemo f=new ScribbleDemo();
    f.setSize(300,300);
    f.setVisible(true);
}}

//2017.6.16 今天最喜欢的一道练习题

你可能感兴趣的:(实现鼠标事件的响应)