Java 图像不';除非调整JFrame的大小,否则不会显示
我一直在尝试使用JPanel在JFrame上显示图像,但只有在调整JFrame的大小时,图像才会显示 显示:Java 图像不';除非调整JFrame的大小,否则不会显示,java,image,swing,paintcomponent,drawimage,Java,Image,Swing,Paintcomponent,Drawimage,我一直在尝试使用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(); publi
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
Toolkit.createImage()
异步加载图像。尝试指定图像观察者JPanel
实现了ImageObserver
,因此可以使用以下行:
g.drawImage(spaceship, 100, 100, this);
或者,您可以使用同步加载图像的ImageIO.read
根据建议,他们建议在设置可见之前进行打包或设置大小。更改“添加”和“设置大小”的顺序如何
public Screen(){
setTitle("Spaceships!");
setLocationRelativeTo(null);
add(s);
setSize(700,605);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
根据建议,他们建议在设置可见之前进行打包或设置大小。更改“添加”和“设置大小”的顺序如何
public Screen(){
setTitle("Spaceships!");
setLocationRelativeTo(null);
add(s);
setSize(700,605);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}