BUAA-Soft-2023-Summer / Soft-Summer-2023

北航软件学院 2023 夏《程序设计实践》 小学期仓库
18 stars 0 forks source link

Java人物无法显示 #9

Closed xuexia004 closed 1 year ago

xuexia004 commented 1 year ago

添加的代码

character1 cha1=new character1(300, 300, 250, 400);
            JPanel panel = new JPanel() {//绘图
                @Override
                protected void paintComponent(Graphics g) {
                    super.paintComponent(g);
                    cha1.draw(g);
                }
            };
            panel.setVisible(true);
            this.getContentPane().add(panel);

character1类

public class character1 {
    int x;
    int y;
    int width;
    int height;
    BufferedImage image=null;
    public character1(int x,int y,int width,int height)  {
        this.x=x;
        this.y=y;
        this.width=width;
        this.height=height;
        try {
            image = ImageIO.read(new File("..\\first project\\src\\common\\Cha1.png"));
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("Failed to load image: " + e.getMessage());
        }
    }
    public void draw(Graphics g) {
        g.drawImage(image, x, y, width, height, null);
    }
}

(整了快半天,人麻了)

aamofe commented 1 year ago

1.判断文件路径是否正确,或者试试换成/ 2.试着切换图片的尺寸,看是否能够显示,或者换一张图片试试 3.多几条print语句看看错误在哪

Abyss7893 commented 1 year ago

感觉你的图片相对路径可能有点问题,一般写成 "../first project/src/common/Cha1.png" 这样找,你可以试着输出一下看看这个图片是否被正确加载。如果正确加载的话可以试试页面刷新如 revalidate() 和 repaint() 等方法。另外坐标如果定位到你设置的画布的外面也有可能无法显示,也可以检查一下绘制的内容是否超出边界。如果都不行的话只能多加几个 print 看看到底在哪一步出问题了 owo

xuexia004 commented 1 year ago

OK了OK了