swing畫圖小程序

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;

public class MouseDemo4 extends JFrame implements MouseMotionListener,MouseListener{
	int startx,starty,endx,endy;
	Vector<Rectangle> rectangles = new Vector<Rectangle>();
	public MouseDemo4(){
		this.addMouseListener(this);
		this.addMouseMotionListener(this);
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setSize(500,500);
		
	}

	public static void main(String...args){
		new MouseDemo4();
	}
	
	@Override
	public void mouseMoved(MouseEvent e){
		
	}
	@Override
	public void mouseDragged(MouseEvent e){
		Graphics g = this.getGraphics();
		//this.repaint();//repaint會先調用update()刷新屏幕再調用paint()會造成屏幕抖動
		paint(g);
		g.setColor(Color.blue);
		g.drawRect(Math.min(startx,e.getX()),Math.min(starty, e.getY()), Math.abs(e.getX()-startx), Math.abs(e.getY()-starty));
	}
	@Override
	public void mousePressed(MouseEvent e){
		startx = e.getX();
		starty = e.getY();
	}
	@Override
	public void mouseReleased(MouseEvent e){
		endx = e.getX();
		endy = e.getY();
		rectangles.add(new Rectangle(Math.min(startx,e.getX()),Math.min(starty,e.getY()),Math.abs(e.getX()-startx),Math.abs(e.getY()-starty)));
		//this.repaint();
	}
	@Override
	public void mouseEntered(MouseEvent e){
		
	}
	@Override
	public void mouseExited(MouseEvent e){
		
	}
	@Override
	public void mouseClicked(MouseEvent e){
		
	}
	
	public void paint(Graphics g){
		g.setColor(Color.blue);
		super.paint(g);
		for(Rectangle rec:rectangles){
			g.drawRect(rec.x,rec.y,rec.width,rec.height);
		}
	}
}


參考:http://zhidao.baidu.com/question/88557140.html?si=6

你可能感兴趣的:(java,html,swing)