去http://forum.java.sun.com/index.jsp问吧

解决方案 »

  1.   

    你的repaint()调用的太频繁了吧,
    每次调用repaint()都会调用你写的paint()方法。
    你修改一下,把repaint()去掉会好些。这是我的一个用鼠标画图的简单程序,
    不是Applet下的,不过我想原理应该差不多吧,参考一下吧
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.Graphics2D;
    public class TestPanel extends JFrame {
      JPanel panel = new JPanel();
      JPanel pnlCtl = new JPanel();
      JButton button = new JButton("Draw line");
      JButton button2 = new JButton("Clear all");
      public TestPanel() {
        Container cp = this.getContentPane();
        cp.add(panel,BorderLayout.CENTER);
        button.addMouseListener(new MouseAdapter(){
          public void mouseClicked(MouseEvent me)
          {
            Graphics2D g2 = (Graphics2D) panel.getGraphics();
            g2.drawRect(20,20,100,300);
          }
        });
        button2.addMouseListener(new MouseAdapter(){
          public void mouseClicked(MouseEvent me)
          {
            panel.getGraphics().clearRect(0,0,700,400);
          }
        });
        pnlCtl.add(button);
        pnlCtl.add(button2);
        cp.add(pnlCtl,BorderLayout.NORTH);
        setSize(800,600);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.show();
      }
      public static void main(String[] args) {
        TestPanel testPanel = new TestPanel();
      }
    }
      

  2.   

    是屏幕刷新的问题,你应该在repaint()中,把画的图案重新加载到屏幕上,这样才不会消失!