繁体   English   中英

Java小程序中的图像不会显示

[英]Image in Java applet won't show up

我有一个星期天(在学校)到期的项目,但在显示图像时遇到问题。

除了图像之外的其他一切都在工作,我使用了很多人的代码示例,但没有一个工作。

我将保存为“car.png”的图像放在项目目录中。

你能告诉我我错在哪里吗?

这是一个项目,我需要制作一个 Java Applet 来显示一条有几座建筑物的街道、一条道路和路上的一辆汽车,但我无法显示汽车图像。

非常感谢您的帮助!

import java.applet.*;
import java.awt.color.*;
import java.awt.Graphics;
import java.awt.*;



public class App_Main extends Applet
    {
    House[] h;
    private Image img;

    public void init()
    {
        Private v1 = new Private(120,300,80);
        Private v2 = new Private(180,300,80);
        Building b1 = new Building(300,300,80,5);
        img = getImage(getCodeBase(),"car.png");


        h= new House[3];

        h[0] = v1;
        h[1] = v2;
        h[2] = b1;
    }
    public void paint (Graphics g) {
        Private v1 = new Private(120, 300, 50);
        Private v2 = new Private(180, 300, 50);
        Building b1 = new Building(300, 300, 80, 5);


        House[] h = new House[3];

        h[0] = v1;
        h[1] = v2;
        h[2] = b1;

        for (int i = 0; i < 3; i++) {
            g.setColor(Color.BLUE);
            h[i].paintHouse(g);
        }

        //start road

        g.setColor(Color.BLACK);

        g.drawLine(0, 370, 1000, 370);
        g.setColor(Color.GRAY);
        g.fillRect(0, 371, 1000, 150);
        g.setColor(Color.BLACK);
        g.drawLine(0, 520, 1000, 520);
        for (int x=0; x < 1000; x += 100)
        {
            g.setColor(Color.WHITE);
            g.fillRect(x+25, 430, 50, 20);
        }

        //end road

        g.drawImage(img,50,50,this);



    }
}

您的代码中有几个问题:

  1. 您正在使用小程序

    小程序是一种高级且专业的应用程序。 在我们周围的现实世界中几乎没有立足之地

    请参阅 Andrew Thompson 的帖子为什么 CS 教师应该停止教授 Java Applet以阅读有关此内容的更多信息。

    相反,您应该尝试使用上面推荐的帖子中也介绍过的 Java Swing。

  2. 您正在覆盖Applet paint() (不添加@Override注释)方法,而是应该有一个JPanel@Override它是paintComponent()方法,然后让Applet显示我之前说过的JPanel ,如上所述在这个气垫船的答案中

  3. 与上述点相关,您不是在调用Applet类的super.paint()方法

  4. 你不知道你的img是否在你的代码库中,所以调试你的应用程序(使用调试器或一些System.out.println()调用并检查car.png的路径是否正确。

为了尽快获得更好的帮助,请发布有效的最小、完整和可验证示例 (MCVE) ,其中包括House类(如果需要)或简单地绘制图像。

另外作为附带建议,不要使用下划线 ( _ ) 来分隔类名称中的单词( App_Main可以写为AppMain ,这没什么大不了的,但它是Java 命名约定

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM