import java.awt.*;public class TestPaint{
public static void main(String[]args){
new PaintFrame().launchFrame();
}
}

class PaintFrame extends Frame{
public void launchFrame(){
setBounds(200,200,640,640);
setVisible(true);
}

public void paint(Graphics g){
Color c = g.getColor();
g.setColor(Color.red);
g.drawOval(50,50,30,30);
g.setColor(Color.green);
g.drawRect(50,50,50,50);
g.setColor(c);
}
}
上面这段程序,调试没有错误,运行时之显示一个窗口,里面本意要显示的一个椭圆和一个方形却没有显示。各位,谁能帮我看一下,哪里出了问题?谢谢!

解决方案 »

  1.   

    试了一下可以显示,如果不行试试下面这个代码:import java.awt.Color;
    import java.awt.EventQueue;
    import java.awt.Frame;
    import java.awt.Graphics;public class TestPaint {  public static void main(String[] args) {
        
        EventQueue.invokeLater(new Runnable() {      @Override
          public void run() {
            
            new PaintFrame().launchFrame();
          }
        });
      }
    }class PaintFrame extends Frame {  public void launchFrame() {
        
        setBounds(200, 200, 640, 640);
        setVisible(true);
      }  @Override
      public void paint(Graphics g) {
        
        Color c = g.getColor();
        g.setColor(Color.red);
        g.drawOval(50, 50, 30, 30);
        g.setColor(Color.green);
        g.drawRect(50, 50, 50, 50);
        g.setColor(c);
      }
    }
    另外,不要花时间在AWT上,真想画GUI,用Swing (JFrame)。
      

  2.   

    呃,如果上面那个代码还是不行,试试这个:import java.awt.*;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;public class TestPaint {  public static void main(String[] args) {
        
        EventQueue.invokeLater(new Runnable() {      @Override
          public void run() {
            
            Frame f = new PaintFrame();
            f.setLocationRelativeTo(null);
            f.setVisible(true);
          }
        });
      }
    }class PaintFrame extends Frame {  PaintFrame() {
        
        add(new Panel() {
          
          @Override
          public void paint(Graphics g) {
            
            Color c = g.getColor();
            g.setColor(Color.red);
            g.drawOval(50, 50, 30, 30);
            g.setColor(Color.green);
            g.drawRect(50, 50, 50, 50);
            g.setColor(c);
          }
        });
        
        addWindowListener(new WindowAdapter() {      @Override
          public void windowClosing(WindowEvent e) {
            
            dispose();
          }
        });
        
        setSize(640, 640);
      }
    }
      

  3.   

    谢谢啦。我刚开始自学,遇到这种问题也没人指导,只好跑这上面来了。现在属于依样画葫芦的阶段,还不知道用Swing (JFrame)。