repaint 一次会撤销原来画上去的东西,我不想他撤销怎么办?import java.awt.*;
import javax.swing.JFrame;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class CanvasDemo1 extends Canvas implements MouseListener{
 int clickX=100;
 int clickY=100;
public void paint(Graphics g){
g.setColor(Color.black);
g.setFont(new Font("Times Roman",Font.BOLD,24));
g.drawString("hello!",clickX,clickY);
}
public static void main(String [] args){
JFrame frame=new JFrame("NAME");
CanvasDemo1 mc=new CanvasDemo1();
mc.setSize(320,320);
mc.addMouseListener(mc);
frame.add(mc,BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
 public void mouseClicked(MouseEvent e){
  clickX=e.getX();
  clickY=e.getY();
  repaint();
 }
 public void mouseExited(MouseEvent e){}
 public void mouseEntered(MouseEvent e){}
 public void mousePressed(MouseEvent e){}
 public void mouseReleased(MouseEvent e){}
}

解决方案 »

  1.   

    用JPanel 然后
    setOpaque(true);
    就OK了
    import java.awt.*;
    import javax.swing.JFrame;
    import javax.swing.JPanel;import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    public class CanvasDemo1 extends JPanel implements MouseListener{
    int clickX=100;
    int clickY=100;
    public void paint(Graphics g){
    g.setColor(Color.black);
    g.setFont(new Font("Times Roman",Font.BOLD,24));
    g.drawString("hello!",clickX,clickY);
    }public static void main(String [] args){
    JFrame frame=new JFrame("NAME");
    CanvasDemo1 mc=new CanvasDemo1();
    frame.setSize(320, 320);
    mc.setSize(320,320);
    mc.addMouseListener(mc);
    mc.setOpaque(true);
    frame.add(mc,BorderLayout.CENTER);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //frame.pack();
    frame.setVisible(true);
    frame.setResizable(false);
    }
    public void mouseClicked(MouseEvent e){
    clickX=e.getX();
    clickY=e.getY();
    repaint();
    }
    public void mouseExited(MouseEvent e){}
    public void mouseEntered(MouseEvent e){}
    public void mousePressed(MouseEvent e){}
    public void mouseReleased(MouseEvent e){}
    }