栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

每次单击鼠标都画一条线,双击时停止绘制

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

每次单击鼠标都画一条线,双击时停止绘制

注意添加的标志:

import java.awt.BasicStroke;import java.awt.BorderLayout;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Label;import java.awt.Point;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.MouseMotionListener;import java.util.ArrayList; import javax.swing.Jframe;import javax.swing.JPanel;public class WorkingLines {    public WorkingLines() {        Jframe jf = new Jframe("Free Hand Drawing Example");        JPanel draw = new DrawBoard();        jf.add(new Label("Click....move mouse, click again"), BorderLayout.NORTH);        jf.add(draw);        jf.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);        jf.setSize(600, 500);        jf.setVisible(true);    }    public static void main(String a[]) {        new WorkingLines();    }}class DrawBoard extends JPanel implements MouseListener, MouseMotionListener {    ArrayList<pts> list = new ArrayList<>();    Point start, end;    private boolean isDrawing = false; //a flag    public DrawBoard() {        start = null;  end = null;         addMouseListener(this);        addMouseMotionListener(this);    }    @Override    public void paintComponent(Graphics g) {        super.paintComponent(g);        Graphics2D g2 = (Graphics2D) g;        g2.setStroke(new BasicStroke(3, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));        super.paintComponent(g2);        for (pts p : list) { g.drawLine((int) p.getStart().getX(), (int) p.getStart().getY(), (int) p.getEnd().getX(),         (int) p.getEnd().getY());        }        if ((start != null) && (end != null)) { g.drawLine(start.x, start.y, end.x, end.y);        }    }    @Override    public void mouseClicked(MouseEvent arg0) {}    @Override    public void mouseEntered(MouseEvent arg0) {}    @Override    public void mouseExited(MouseEvent arg0) {}    @Override    public void mousePressed(MouseEvent me) {        if(! isDrawing) { start = me.getPoint(); isDrawing = ! isDrawing;        }else { pts pt = new pts(start, end); list.add(pt); start = end;        }    }    @Override    public void mouseReleased(MouseEvent me) {        if (me.getClickCount() == 2) { start = null; end = null; isDrawing = false;        }    }    @Override    public void mouseDragged(MouseEvent me) {}    @Override    public void mouseMoved(MouseEvent me) { end = me.getPoint(); repaint();    }}class pts {    Point start = null, end = null;    public pts(Point start, Point end) {        this.start = start;        this.end = end;    }    public Point getStart() { return start;   }    public Point getEnd() {  return end;  }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/496467.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号