gpt4 book ai didi

java - 除非我调整 JFrame 的大小,否则图像不会出现

转载 作者:行者123 更新时间:2023-11-30 07:22:27 25 4
gpt4 key购买 nike

我一直在尝试使用 JPanel 在 JFrame 上显示图像,但只有在调整 JFrame 的大小时图像才会显示

显示:

package display;

import javax.swing.JFrame;
import img.*;

public class Screen extends JFrame{

private static final long serialVersionUID = 1L;

Spaceship s = new Spaceship();
public static void main(String[]args){
new Screen();
}

public Screen(){
setTitle("Spaceships!");
setSize(700,605);
setLocationRelativeTo(null);
add(s);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);

}
}

宇宙飞船

package img;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;

import javax.swing.JPanel;

public class Spaceship extends JPanel{

private static final long serialVersionUID = 1L;

Image spaceship = (Image)Toolkit.getDefaultToolkit().getImage(getClass().getResource("res/spaceship.png"));

public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(spaceship,100,100,null);
}
}

我知道发生了什么事,所以我将不胜感激

最佳答案

Toolkit.createImage() 异步加载图像。尝试指定图像观察者。 JPanel 实现了 ImageObserver,因此可以使用以下行:

g.drawImage(spaceship, 100, 100, this);

作为替代方案,您可以使用同步加载图像的 ImageIO.read

关于java - 除非我调整 JFrame 的大小,否则图像不会出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12765588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com