如题
麻烦各位朋友给个思路
谢谢啦!

解决方案 »

  1.   

    呵呵,感觉很有趣,写了个完整的代码给你,
    你可以先运行下看看,然后在看代码,不是很复杂:import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.Point;
    import java.awt.Rectangle;
    import java.awt.Shape;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.util.ArrayList;
    import java.util.List;import javax.swing.JFrame;
    import javax.swing.JPanel;
    //这就是一个窗口
    public class Paint extends JFrame{

    public static void main( String[] args ) {
    new Paint();
    }

    public Paint() {
    getContentPane().add( new Canvas(null), BorderLayout.CENTER );

    setDefaultCloseOperation( EXIT_ON_CLOSE );
    setSize(500,600);
    setLocationRelativeTo( null );
    setVisible(true);
    }
    }//这个类充当了一个画板的角色
    class Canvas extends JPanel{
    private List<Shape> shapes = new ArrayList<Shape>();
    private Image background = null;

    private Shape tmp = null;

    public Canvas (Image background) {
    this.background = background;
    AmouseListener al = new AmouseListener();
    this.addMouseListener( al );
    this.addMouseMotionListener( al );
    }

    //所有的作画操作在这里
    protected void paintComponent( Graphics g ) {
    super.paintComponent( g );
    g.setColor( Color.WHITE );
    if( background != null ) {
    int iWidth = background.getWidth( this );
    int iHeight = background.getHeight( this ); 
    g.drawImage( background, 0, 0, iWidth, iHeight, this );
    }else {
    g.fillRect( 0, 0, this.getWidth(), this.getHeight() );
    }
    g.setColor( Color.RED );
    Graphics2D g2 = (Graphics2D)g;
    for(int i=0;i<shapes.size();i++) {
    g2.draw( shapes.get( i ) );
    }

    if( tmp != null ) {
    g2.setColor( Color.BLUE );
    g2.draw( tmp );
    tmp = null;
    }
    }

    //监听鼠标事件的监听器
    class AmouseListener extends  MouseAdapter{
    private Point start = null;
    private Point end = null;

    public void mousePressed( MouseEvent e ) {
    start = e.getPoint();
    } public void mouseReleased( MouseEvent e ) {
    end = e.getPoint();
    shapes.add( getRect( start, end ) );
    Canvas.this.repaint();
    }

    private Rectangle getRect(Point p1, Point p2) {
    int x1 = (int) p1.getX();
    int y1 = (int) p1.getY();
    int x2 = (int) p2.getX();
    int y2 = (int) p2.getY();
    int x = Math.min( x1, x2 );
    int y = Math.min( y1, y2 );
    int w = Math.abs( x1 - x2 );
    int h = Math.abs( y1 - y2 );
    Rectangle rt = new Rectangle(x,y,w,h);
    return rt;
    } public void mouseDragged( MouseEvent e ) {
    Rectangle rt = getRect( start, e.getPoint() );
    Canvas.this.tmp = rt;
    Canvas.this.repaint();
    }
    }
    }
      

  2.   

    ♂感谢3楼的朋友“qusic”♂
    要讲你提供代码移植到我的程序上还需要一点时间进行研究
    现在就给你分吧