我一直在用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添加到该项目中,我看不出它为什么不能正确显示。我做错了什么?
- 在使框架可见之前,应将组件添加到框架中
- 您正在为框架使用FlowLayout。FlowLayout尊重所有组件的首选尺寸。Map类没有首选大小,因此大小默认为(0,0),因此不需要绘制任何内容。重写Map类的
getPreferredSize()
方法以返回组件的适当大小