Java 为什么Frame.Width和Frame.Height返回的值非常不正确
我想根据JFrame的帧和宽度显示图像,这样图像将根据帧的大小按比例显示。我的程序设计为不可能使用任何布局管理器 但是,当我尝试根据frame.width和frame.height参数显示图像时,它会一直在JFrame的左上角显示图像。另外,打印包含frame.width和frame.height返回值分别为1和2的语句。这怎么可能?我已经把代码放在下面了 另外,我为奇怪的缩进感到抱歉,但是我很难让代码正确地显示在这个网站上。我必须手动按下某些行的空格键4次,即使我知道它是代码中正确的缩进,当我这样做时,它显示在代码视图中,但缩进不正确Java 为什么Frame.Width和Frame.Height返回的值非常不正确,java,image,jframe,height,width,Java,Image,Jframe,Height,Width,我想根据JFrame的帧和宽度显示图像,这样图像将根据帧的大小按比例显示。我的程序设计为不可能使用任何布局管理器 但是,当我尝试根据frame.width和frame.height参数显示图像时,它会一直在JFrame的左上角显示图像。另外,打印包含frame.width和frame.height返回值分别为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();
}
}
您所调用的是ImageObserver的静态字段,它指示基础图像的宽度现在可用,并且可以根据需要进行拍摄
System.out.println(frame.getWidth() + " " + frame.getHeight());
请注意,我调用的是frame对象的方法,而不是frame类的静态字段frame.WIDTH?你为什么要用这个?你想用这段代码实现什么?一些图片链接会很好。顺便说一下,这不是显示比例宽度图像的方式。阅读我上面的描述,您将看到。public static final int width=1;公共静态最终内部高度=2;是在imageUpdate方法中使用的标志,非常确定它们没有做你认为它们是的事情-这就是阅读变得非常重要的地方我不知道我怎么会错过它。但是,当我进行更改时,仍然得到完全相同的结果。您是否也更改了这行g.drawImageimage,Frame.WIDTH,Frame.HEIGHT,null;等等,我没有正确更改代码,现在它可以工作了。非常感谢。总是乐意帮忙如果这个答案已经解决了你的问题,请考虑通过点击复选标记来接受它。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做