Mar*_*tin 0 java graphics swing
我正在用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);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的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);
Run Code Online (Sandbox Code Playgroud)
但是,我只得到一个灰色的框架作为输出,没有图像.我已经通过将图像作为单独的ImageIcon添加到框架中来测试图像,这是有效的.但是,我似乎无法在框架中显示RoadNetwork类.我应该以某种方式调用paintcomponent函数吗?我究竟做错了什么?
从你的代码中,你有一个错误的方法.
protected void paintcomponent (Graphics g) {
Run Code Online (Sandbox Code Playgroud)
不要求油漆.
protected void paintComponent (Graphics g) {
Run Code Online (Sandbox Code Playgroud)
是方法的正确名称,它将覆盖父项一个,而这个名称由JVM调用.