如何在Java中调用图形类?

时间:2013-12-17 06:12:05

标签: java graphics draw

我一直在为Java中的交通流网络编码模拟,并且应该以图形方式对网络建模的类如下所示:

public class Map extends JPanel {
BufferedImage truck1;

public Map() throws IOException{
    truck1 = ImageIO.read(getClass().getResource("Truck.png"));
}

protected void paintcomponent (Graphics g) {
super.paintComponent(g);

g.drawImage(truck1, 50, 100, 300, 300, this);
}
}

在我的main()函数中,我在函数的最开头实例化了对象:

Frame F1 = new Frame();
F1.setLayout(new FlowLayout());
F1.setSize(500,500);
F1.setVisible(true);
Map map = new Map();
map.setOpaque(true);
F1.add(map);
F1.setVisible(true);

但是,当我运行程序时,唯一的输出是一个空白窗口,窗口顶部正中间有一个稍暗的灰色小方块。我已经将Truck.png添加到项目中,我看不出有什么理由不能正常显示。我做错了什么?

1 个答案:

答案 0 :(得分:2)

  1. 在框架可见之前,应将组件添加到框架中。
  2. 您正在为您的框架使用FlowLayout。 FlowLayout尊重所有组件的首选大小。您的Map类没有首选大小,因此大小默认为(0,0),因此无需绘制任何内容。重写Map类的getPreferredSize()方法以返回组件的适当大小。