[Java GUI] 简易Java绘图程序实例
来源:互联网 发布:直接下订单的网站源码 编辑:程序博客网 时间:2024/04/30 11:09
本例演示了如何响应鼠标动作来实现绘图,为使重绘时原先信息不丢失,使用了Vector<T>类来保存所绘制的各条曲线,其中curve对象用于保存每条曲线,而curves对象保存所有绘制的独立曲线。
import java.awt.Color;import java.awt.Container;import java.awt.Dimension;import java.awt.Graphics;import java.awt.Point;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.MouseMotionListener;import java.util.Vector;import javax.swing.JFrame;import javax.swing.JPanel;public class MyPaint {public static void main(String[] args) {new PaintFrame( "JavaPainter" );}}class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {private Vector<Point> curve;private Vector<Vector<Point>> curves;private Point ptFrom = new Point();private Point ptTo = new Point();MyCanvas() {curve = new Vector<Point>();curves = new Vector<Vector<Point>>();this.setPreferredSize(new Dimension(300, 200));this.addMouseListener( this );this.addMouseMotionListener( this );}public void paintComponent( Graphics g ) {g.setColor( Color.RED );for( Vector<Point> points : curves ) {Point pt0 = points.get( 0 );for( int i = 1; i < points.size(); ++i ) {Point pt = points.get( i );g.drawLine(pt0.x, pt0.y, pt.x, pt.y);pt0 = pt;}}}@Overridepublic void mousePressed(MouseEvent e) {ptFrom.x = e.getX();ptFrom.y = e.getY();curve.add( (Point) ptFrom.clone() );}@Overridepublic void mouseReleased(MouseEvent e) {ptTo.x = e.getX();ptTo.y = e.getY();curve.add( (Point) ptTo.clone() );curves.add( new Vector<Point>( curve ) );curve.clear();}@Overridepublic void mouseDragged(MouseEvent e) {ptTo.x = e.getX();ptTo.y = e.getY();curve.add( ( Point )ptTo.clone() );Graphics g = getGraphics();g.setColor(Color.RED);g.drawLine( ptFrom.x, ptFrom.y, ptTo.x, ptTo.y );ptFrom.x = ptTo.x;ptFrom.y = ptTo.y;}@Overridepublic void mouseEntered(MouseEvent e) {// do nothing}@Overridepublic void mouseExited(MouseEvent e) {// do nothing}@Overridepublic void mouseClicked(MouseEvent e) {// do nothing}@Overridepublic void mouseMoved(MouseEvent e) {// do nothing}}class PaintFrame extends JFrame {private MyCanvas canvas = new MyCanvas();PaintFrame( String title ) {super( title );Container cp = getContentPane();cp.add(canvas);setSize(300, 200);setVisible(true);}}
- [Java GUI] 简易Java绘图程序实例
- JAVA GUI PART1 记事本程序 极其简易版
- python tkinter GUI 程序简易实例
- Java GUI做简易计算器
- Java GUI 实例一
- Java GUI简单实例
- EasyX简易绘图实例
- EasyX简易绘图实例
- 调试java GUI程序
- java基础教程4 :Gui和绘图
- Java 简易计算器程序
- 简易java签到程序
- JAVA--简易聊天室程序
- java GUI(实例项目--记事本)
- 用 Java 写GUI 程序
- java SWING/GUI测试程序
- JAVA GUI程序交互 示例
- Java简易计算器V1.0-第一个Java GUI项目
- MapReduce源码分析总结
- Hadoop的运行痕迹
- tcgetattr
- 使用反射绕过泛型,直接赋值
- 最大团的求法
- [Java GUI] 简易Java绘图程序实例
- 追求不完美
- 马周游问题【sicily 1152 &1153.】
- 2012-10-11 迅雷笔试
- Hadoop学习笔记
- Hadoop 三台主机 集群搭建 详解
- 小米公司2013校园招聘笔试题(研发)
- Windows 下配置 Eclipse 连接 Hadoop 开发环境
- VMware Redhat网络配置