怎么样刷新jpanel,使得jpanel上画的图形全部去掉

解决方案 »

  1.   

    repaint,validate,revalidate都用了,还是不行。
      

  2.   

    jpanel.upDataUI();  
    jpanel.rePaint();  
    jpanel.invalidate();  
    jpanel.validate();
      

  3.   

    脏绘制问题。需要在你绘制方法里g.fillRect(),以覆盖原来绘制的东西。或则用clearRect也一样。
    如果有透明效果的,就不用这样了。设置了透明属性的组件会自己清除的
      

  4.   

    public class mainfile {
    private static mypanel mypanel = new mypanel(); public static void main(String[] args) {
    JFrame myframe = new JFrame();
    myframe.add(mypanel, BorderLayout.CENTER);
    myframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    myframe.setVisible(true);
    myframe.pack();
    }
    }class mypanel extends JPanel { private Path2D path = new Path2D.Double();
    private mypanel self = null; mypanel() {
    self = this; this.setPreferredSize(new Dimension(800, 700));
    this.setVisible(true);
    mymouseListener mymouse = new mymouseListener(this, path);
    this.addMouseListener(mymouse);
    this.addMouseMotionListener(mymouse); } public void paintComponent(Graphics g) {
    Graphics2D ar = (Graphics2D) g;
    ar.draw(path); }}class mymouseListener implements MouseListener, MouseMotionListener { private JPanel myComponent = null;
    private Path2D mypath = null; boolean isinit = true;
    boolean isok = true; mymouseListener(JPanel mcom, Path2D mpath) {
    myComponent = mcom;
    mypath = mpath;
    // point = new Point(); } @Override
    public void mouseClicked(MouseEvent e) {
    // TODO Auto-generated method stub } @Override
    public void mouseEntered(MouseEvent e) {
    // TODO Auto-generated method stub } @Override
    public void mouseExited(MouseEvent e) {
    // TODO Auto-generated method stub } @Override
    public void mousePressed(MouseEvent e) {
    // TODO Auto-generated method stub
    isinit = false;
    isok = !isok;
    if (!isok) {
    mypath.reset();
    mypath.moveTo(e.getX(), e.getY()); } else {
    myComponent.repaint();
    } } @Override
    public void mouseReleased(MouseEvent e) {
    // TODO Auto-generated method stub } @Override
    public void mouseDragged(MouseEvent e) {
    // TODO Auto-generated method stub } @Override
    public void mouseMoved(MouseEvent e) {
    // TODO Auto-generated method stub
    if (!isinit && !isok) {
    mypath.lineTo(e.getX(), e.getY());
    myComponent.validate();
    myComponent.revalidate();
    myComponent.repaint(); }
    }}
      

  5.   

    要不你在paintComponent中加一句话也可以,super.paintComponent,不过不保证适用于所有情况