import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Panel;
public class TempTest { public static void main(String[] args) {
Frame f = new Frame();
Panel p= new Panel();
f.setVisible(true);
f.setBounds(100, 100, 400, 400);
f.add(p);
Graphics g = p.getGraphics();
g.drawRect(100, 100, 100, 100);

}

}
为什么矩形不显示,就只有一个空白框?

解决方案 »

  1.   

    重写一下panel 的 paint方法,在里面画图,应该是可以的
      

  2.   

    这样是可以画图,但是这样画出来的图不就写死了么,我要的是先new 出来一个panel,然后再画图,可以随时添加图元的,怎么实现?
      

  3.   

    你想填充这个矩形框么?
    g.setColor(Color.red);
    g.filRect(100,100,100,100);
      

  4.   

    public class TempTest {
     
        public static void main(String[] args) {
            Frame f = new Frame();
            Panel p= new Panel() { @Override
    public void paint(Graphics g) {
    // TODO Auto-generated method stub
    super.paint(g);
            g.drawRect(100, 100, 100, 100);
    }
            
            };
            f.setVisible(true);
            f.setBounds(100, 100, 400, 400);
            f.add(p);
        }
    }
    一点建议,使用Swing组件,不要再用AWT组件了!
    JFrame and JPanel
      

  5.   

    是我表述有歧义,我的意思是只有一个frame,里面什么都没有,矩形没有画出来
      

  6.   

    添加图形的话,你需要使用数据结构来记录,然后在
    public void paint(Graphics g) 中读取数据结构然后绘制
    改变数据结构的时候,再调一下repaint();不要使用结构化的方法来添加图形...