我绘制了一个矩形,但是当再绘制其它图形时,先前的那个矩形会被擦除,怎么才能解决啊,急救!!!我用了ArrayList来存储所画的图形,也不能解决。

解决方案 »

  1.   

    都不知道你代码怎么写的,怎么给你建议从你描述的现象,你肯定是每画一个新的图形都调用了一次清除的过程
    比如 super.paintComponent 啊什么的如果你的重写的 paintComponent 方法那你就应该在这个方法里一次性把 ArrayList 中所有的图形都画完,只在开头调一次 super.paintComponent
      

  2.   

    给你个不错的视频教程你可以看看,也许有用
    视频简介
    DRP分销资源计划项目之业务介绍
    DRP分销资源计划项目之数据库设计
    北京动力节点_DRP分销资源计划项目之HTML
    北京动力节点_DRP分销资源计划项目之CSS
    北京动力节点_DRP分销资源计划项目之JavaScript
    北京动力节点_DRP分销资源计划项目之Ajax
    北京动力节点_DRP分销资源计划项目之JSP
    北京动力节点_DRP分销资源计划项目之Servlet
    北京动力点_DRP分销资源计划项目之JDBC
    北京动力节点_DRP分销资源计划项目之XML
    北京动力节点_DRP分销资源计划项目之JSTL
    北京动力节点_DRP分销资源计划项目之CVS
    北京动力节点_DRP分销资源计划项目之Web Services
    北京动力节点_DRP分销资源计划项目之Tomcat
    北京动力节点_DRP分销资源计划项目之设计模式
    北京动力节点_DRP分销资源计划项目之设计原则
    北京动力节点_DRP分销资源计划项目之UML
    北京动力节点_Struts
    北京动力节点_Spring
    北京动力节点_Hibernate 
      

  3.   

    private ArrayList<Shape> shapes = new ArrayList<Shape>();public void addShape(Shape s){
        shapes.add(s);
        repaint();
    }public void paintComponent(Graphics g){
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D)g;
        
        g2d.setPaint(Color.BLACK);
        for(Shape shape : shapes){
            g2d.draw(shape);
        }
    }
      

  4.   

    看看这个程序,对你有些帮助吗~~
    import java.awt.*;
    import java.awt.geom.*;
    import javax.swing.*;public class b
    {  
       public static void main(String[] args)
       {  
          DrawFrame frame = new DrawFrame();
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.show();
       }
    }/**
       A frame that contains a panel with drawings
    */
    class DrawFrame extends JFrame
    {
       public DrawFrame()
       {
          setTitle("DrawTest");
          setSize(WIDTH, HEIGHT);      // add panel to frame      DrawPanel panel = new DrawPanel();
          Container contentPane = getContentPane();
          contentPane.add(panel);
       }   public static final int WIDTH = 400;
       public static final int HEIGHT = 400;  
    }/**
       A panel that displays rectangles and ellipses. 
    */
    class DrawPanel extends JPanel
    {  
       public void paintComponent(Graphics g)
       {  
          super.paintComponent(g);
          Graphics2D g2 = (Graphics2D)g;      // draw a rectangle      double leftX = 100;
          double topY = 100;
          double width = 200;
          double height = 150;      Rectangle2D rect = new Rectangle2D.Double(leftX, topY,
             width, height);
          g2.draw(rect);      // draw the enclosed ellipse      Ellipse2D ellipse = new Ellipse2D.Double();
          ellipse.setFrame(rect);
          g2.draw(ellipse);      // draw a diagonal line      g2.draw(new Line2D.Double(leftX, topY, 
             leftX + width, topY + height));      // draw a circle with the same center      double centerX = rect.getCenterX();
          double centerY = rect.getCenterY();
          double radius = 150;      Ellipse2D circle = new Ellipse2D.Double();
          circle.setFrameFromCenter(centerX, centerY,
             centerX + radius, centerY + radius);
          g2.draw(circle);
       }
    }