我想根据JFrame的框架和宽度显示图像,这样图像将根据框架的大小按比例显示(我的程序设计为不可能使用任何布局管理器)。
然而,当我尝试根据frame.width和frame.height参数显示图像时,它会一直显示JFrame左上角的图像。此外,包含frame.width和frame.height的print语句分别返回值1和2。这怎么可能?我把代码放在下面。
(另外,我很抱歉这个奇怪的缩进,但我很难让代码在这个网站上正确显示。我必须手动按下一些行的空格键4次,即使我知道它是我的代码中的正确缩进,当我这样做时,它显示在代码视图中但缩进不正确。)
public class ExperimentGame extends JPanel{
Image image;
public ExperimentGame(){
JFrame frame = new JFrame();
SwingUtilities.isEventDispatchThread();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(this);
frame.pack();
frame.setSize(500,500); //my edit
this.setBackground(Color.WHITE);
frame.setVisible(true);
try {
image = ImageIO.read(this.getClass().getResource("spaceship (0).png"));
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
revalidate();
repaint();
System.out.println(Frame.WIDTH + " " + Frame.HEIGHT);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(image, Frame.WIDTH, Frame.HEIGHT, null);
}
}
public class ExperimentMain {
public static void main(String[] args) {
ExperimentGame game = new ExperimentGame();
}
}
答案 0 :(得分:0)
你所说的是ImageObserver的静态字段,它表示基本图像的宽度现在可用,可以按照你想要的方式进行
System.out.println(frame.getWidth() + " " + frame.getHeight());
注意我调用框架对象的方法而不是Frame类的静态字段