我正在用Java编写模拟,但是没有很多使用Graphics对象的经验。我写了一堂课
public class RoadNetwork extends JPanel {
BufferedImage truck1;
public RoadNetwork() throws IOException{
truck1 = ImageIO.read(getClass().getResource("Truck.png"));
}
protected void paintcomponent (Graphics g) {
super.paintComponent(g);
g.drawImage(car1, 0, 0, 100, 100, this);
}
}
在我的main函数中,我按如下方式初始化类:
JFrame F1 = new JFrame();
F1.setLayout(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();
F1.setSize(1280,760);
RoadNetwork roadnetwork = new RoadNetwork();
roadnetwork.setPreferredSize(new Dimension(500,500));
roadnetwork.setVisible(true);
constraints.gridx = 40;
constraints.gridy = 40;
F1.add(roadnetwork, constraints);
F1.setVisible(true);
但是,我只得到一个灰色的框架作为输出,没有图像。我已经通过将图像作为单独的ImageIcon添加到框架中来测试图像,这是有效的。但是,我似乎无法在框架中显示RoadNetwork类。我应该以某种方式调用paintcomponent函数吗?我做错了什么?
答案 0 :(得分:5)
从你的代码中,你有一个错误的方法。
protected void paintcomponent (Graphics g) {
不是为油漆调用的。
protected void paintComponent (Graphics g) {
是方法的正确名称,它将覆盖父项1,JVM将调用此项。