码迷,mamicode.com
首页 > 其他好文 > 详细

绘图小程序

时间:2017-10-23 23:08:12      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:ring   list   awl   鼠标   dem   jpa   phi   line   cli   

点击鼠标左键时,可以进行绘图操作,当点击鼠标右键时,清空屏幕。

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class MouseEventDemo extends JFrame{
    private JPanel p;
    //鼠标上一次的坐标
    int pre_x = -1,pre_y = -1;
    //鼠标当前坐标
    int x, y;
    public MouseEventDemo(){
        super("画板");
        p=new JPanel();
        //注册鼠标监听
        p.addMouseMotionListener(new PaintListener());
        p.addMouseListener(new ResetListener());
        //将面板添加到窗体中
        this.add(p);
        //设定窗口大小
        this.setSize(400,300);
        //设定窗口左上角坐标
        this.setLocation(200, 100);
        //设定窗口默认关闭方式为退出应用程序
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //设置窗口可见
        this.setVisible(true);
    }
    //重写JFrame的paint()方法,此方法用于在窗体中画图
    public void paint(Graphics g){
        //设置画笔颜色
        g.setColor(Color.red);
        //历史坐标>0
        if(pre_x>0&&pre_y>0){
            //绘制一条线段,从上一次鼠标拖动事件点到本次鼠标拖动事件点
            g.drawLine( pre_x, pre_y, x, y);
        }
        //保存当前鼠标坐标,称为上一次的历史坐标
        pre_x=x;
        pre_y=y;
    }
    //定义鼠标拖动监听类
    class PaintListener implements MouseMotionListener{
        //鼠标移动的处理方法
        public void mouseMoved(MouseEvent e){
        }
        //鼠标拖动的处理方法,负责画画工作
        public void mouseDragged(MouseEvent e){
            //获得鼠标当前坐标
            x=e.getX();
            y=e.getY();
            //重画,reprint()触发paint()
            MouseEventDemo.this.repaint();
        }
    } 
    //定义鼠标监听类
    class ResetListener implements MouseListener{
        //鼠标单击事件处理
        public void mouseClicked(MouseEvent e){
        }
        //鼠标按下事件处理
        public void mousePressed(MouseEvent e){
            //获取鼠标按键,判断是否为右键
            if(e.getButton()==MouseEvent.BUTTON3){
                //重画面板(擦除原来的轨迹)
                MouseEventDemo.this.p.repaint();
            }
        }
        //鼠标松开事件处理,重置历史坐标
        public void mouseReleased(MouseEvent e){
            //鼠标松开时,将历史坐标设置为-1(重置)
            pre_x=-1;
            pre_y=-1;
        }
        //鼠标进入事件处理
        public void mouseEntered(MouseEvent e){
        }
        //鼠标退出事件处理
        public void mouseExited(MouseEvent e){
        }
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new MouseEventDemo();

    }

}

 

绘图小程序

标签:ring   list   awl   鼠标   dem   jpa   phi   line   cli   

原文地址:http://www.cnblogs.com/chenttc/p/7719558.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!