Java 涂鸦
来源:互联网 发布:ios蜂窝移动网络搜索 编辑:程序博客网 时间:2024/05/04 13:35
涂鸦原理:
鼠标一点击产生一个实心圆,拖拽产生实心圆
定义Shape类
package com.lovoinfo.shape;import java.awt.Color;import java.awt.Graphics;/** * 图形(抽象类,不能实例化) * @author Administrator * */public abstract class Shape { protected int startX,startY;//起点横纵坐标 protected int endX,endY;//终点横纵坐标 protected Color color; public void setColor(Color color) { this.color = color; } /** * 绘图(抽象方法留给子类重写) * @param g 画笔 */ public abstract void draw(Graphics g); //public abstract void calculate(Graphics g); public int getStartX() { return startX; } public void setStartX(int startX) { this.startX = startX; } public int getStartY() { return startY; } public void setStartY(int startY) { this.startY = startY; } public int getEndX() { return endX; } public void setEndX(int endX) { this.endX = endX; } public int getEndY() { return endY; } public void setEndY(int endY) { this.endY = endY; }}
定义Oval类继承Shape
package com.lovoinfo.shape;import java.awt.Graphics;public class Oval extends Shape{ private int x; private int y; public Oval(int x,int y){ this.x=x; this.y=y; } @Override public void draw(Graphics g) { g.fillOval(x-2, y-2, 4, 4); }}
定义窗口类
package com.lovoinfo;import java.awt.Graphics;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.util.ArrayList;import java.util.List;import javax.swing.JFrame;import com.lovoinfo.shape.Oval;import com.lovoinfo.shape.Shape;@SuppressWarnings("serial")public class MyFrame extends JFrame { private List<Shape> shapeList=new ArrayList<Shape>(); private Shape shape; private boolean isMouseButtonDown;// 判断是否鼠标左键被按下 public MyFrame(){ this.setSize(500, 500); this.setTitle("我的涂鸦窗口"); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(EXIT_ON_CLOSE); //监听鼠标按下 this.addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { isMouseButtonDown = e.getButton() == MouseEvent.BUTTON1; if(isMouseButtonDown){ int x = e.getX();//鼠标按下时记录坐标 int y = e.getY(); shape=new Oval(x,y); shape.setStartX(x); shape.setStartY(y); } } @Override public void mouseReleased(MouseEvent e) { //保存图形 if(isMouseButtonDown && shape!=null){ shapeList.add(shape); } } }); //监听鼠标拖拽 this.addMouseMotionListener(new MouseAdapter() { @Override public void mouseDragged(MouseEvent e) { int x = e.getX();//鼠标拖拽时记录坐标 int y = e.getY(); shape=new Oval(x,y); shape.setEndX(x); shape.setEndY(y); shapeList.add(shape); repaint(); } }); } @Override public void paint(Graphics g) { for(Shape shape:shapeList){ shape.draw(g); } if(shape != null){ shape.draw(g); } }}
0 0
- Java 涂鸦
- JAVA墙角涂鸦
- 涂鸦
- 涂鸦
- 涂鸦
- 涂鸦
- 涂鸦
- "涂鸦"
- 涂鸦
- 涂鸦
- 涂鸦
- 涂鸦~~~~~
- 涂鸦
- 涂鸦
- 涂鸦
- 涂鸦
- 涂鸦
- 涂鸦
- 我搬到CSDN新家啦!
- 蓝桥杯 VIP 基础练习 高精度加法
- STM32(Cortex-M3)中的优先级理解
- Android四大组件讲解
- apk反编译
- Java 涂鸦
- 当今社会为什么赚钱那么难哪?
- 如何在mac本上安装android sdk
- C++函数包装器
- html5 input的type属性启动输入法
- 关于 MeasureSpec,view中measure 的整理
- 工程师在32年前写的技术分享,现在看也得服
- MySQL数据库恢复(使用mysqlbinlog命令)
- Java中数的二进制表示