日期:2014-05-20  浏览次数:20753 次

运行竟然只有窗口 没看到图形
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Frame;
public class Ace
{
public static void main(String[] arg)
{
Frame frame = new Frame();
Canvas canvas = new Canvas();
frame.setVisible(true);
frame.setSize(500, 600);
frame.add(canvas);
Graphics draw=canvas.getGraphics();
draw.drawRect(10, 100, 200, 100);
draw.drawOval(100, 100, 50, 60);
}
}
这可是对着书抄下来了,结果竟然没有图形 百思不得其解!  还有Graphics一定要画到Canvas中吗? 能直接画到 Frame 或 Panel中吗?
------解决方案--------------------
import javax.swing.JFrame;  
import javax.swing.JPanel;  
import java.awt.Color;  
import java.awt.Graphics;  
 
public class DrawArcs extends JFrame {  
  public DrawArcs() {  
    setTitle("画弧形");  
    getContentPane().add(new ArcsPanel());  
  }  
 
  /** 主方法 */ 
  public static void main(String[] args) {  
    DrawArcs frame = new DrawArcs();  
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
    frame.setSize(250, 300);  
    frame.setLocationRelativeTo(null);  
    frame.setVisible(true);  
  }  
}  
 
// 在面板上画弧形的类  
class ArcsPanel extends JPanel {  
  protected void paintComponent(Graphics g) {  
    super.paintComponent(g);  
    g.setColor(Color.BLUE); //设置弧形的颜色为蓝色  
 
    int i=0;  
    int xCenter = getWidth() / 2;  
    int yCenter = getHeight() / 2;  
    int radius = (int)(Math.min(getWidth(), getHeight()) * 0.4);  
 
    int x = xCenter - radius;  
    int y = yCenter - radius;  
 
    //使用while循环画弧形  
    while(i<360){  
        g.fillArc(x, y, 2 * radius, 2 * radius, i, 30);  
        i+=90;  
    }  
  }  
}  


网上看到的一个例子,自己看看吧,你这应该是线程问题。