public void paint(Graphics g){
    g.fillOval(250, 170, 220, 220);
}
当移动别的窗口覆盖所画的图之后又把窗口移走,被覆盖掉的就不会被重绘了,怎么实现重绘?

解决方案 »

  1.   

    http://fronkx.blog.hexun.com/12407600_d.html
      

  2.   

    用repaint(),当启用它时,它会自动重新调用 paint(Graphics g)函数.
      

  3.   

    //新曙光培训@西安
    //www.xinshuguang.org
    import   javax.swing.*;   
    import   java.awt.*;   
    import   java.awt.geom.Rectangle2D;   
    import   java.awt.Graphics2D;   
    public class xsgJuXing
    {
       public static void main(String[] args)
       {
          EventQueue.invokeLater(new Runnable()
             {
                public void run()
                {
                   JuXingFrame frame = new JuXingFrame();
                   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                   frame.setVisible(true);
                }
             });
       }
    }class JuXingFrame extends JFrame
    {
       public JuXingFrame()
       {
          setTitle("新曙光培训@西安");
          setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);      // add panel to frame      JuXingPanel panel = new JuXingPanel();
          add(panel);
       }
       public static final int DEFAULT_WIDTH = 250;
       public static final int DEFAULT_HEIGHT = 200;
    }
    class JuXingPanel extends JPanel
    {
       public   void   paintComponent(Graphics   g)   {  
      //当组件需要重画时,paintComponent被自动调用 
              super.paintComponent(g);   
              Rectangle2D   rect   =   new   Rectangle2D.Double(100,   100,   10,   50);   
                Rectangle2D   ect   =   new   Rectangle2D.Double(100,   100,   10,   50);   
              Graphics2D   g2   =   (Graphics2D)   g;   
              g2.draw(ect);   
              g2.fill(rect);   
          }   
    }
    视频讲解
      

  4.   

    public class JFrame0 extends JFrame {    public JFrame0() {
            initComponents();
            this.add(new MyPanel(this));
            this.setLocationRelativeTo(null);
        }
    }class MyPanel extends JPanel{
        JFrame0 mf = null;
        private float PI = 3.1415926f;
        public MyPanel(JFrame0 mf){
            this.mf = mf;
        }
        
        @Override
        public void paint(Graphics g){
            super.paint(g);
            g.fillOval(250, 170, 220, 220);
        }
        
        public void repaint(Graphics g){
            super.repaint();
        }
    }我这样写就什么都不画.......
      

  5.   

    当然是repaint了,还有你改变窗口大小时会自动重画,你试试看最小化然后还原也会自动重画
      

  6.   

    main函数有无没贴出来大家说的repaint是不是重载repaint?或者是把repaint放到paint里面循环调用
    我现在是想当需要重绘时就重绘,我上面的代码连paint都没实现...