为啥 Frame.Width 和 Frame.Height 返回非常不正确的值
Posted
技术标签:
【中文标题】为啥 Frame.Width 和 Frame.Height 返回非常不正确的值【英文标题】:Why is Frame.Width and Frame.Height returning very incorrect values为什么 Frame.Width 和 Frame.Height 返回非常不正确的值 【发布时间】:2017-11-12 23:12:25 【问题描述】:我想根据 JFrame 的框架和宽度显示图像,以便图像将根据 Frame 的大小按比例显示(我的程序设计为不可能使用任何布局管理器)。
但是,当我尝试根据 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();
【问题讨论】:
Frame.WIDTH
?你为什么还要使用它?你想用这段代码实现什么?一些图片链接会很好。顺便说一句,这不是您显示比例宽度图像的方式。
阅读我上面的描述,你会明白的。
public static final int WIDTH = 1;
和 public static final int HEIGHT = 2;
是 imageUpdate
方法中使用的标志,很确定它们没有按照您的想法做 - 这是阅读 JavaDocs 变得非常重要的地方
【参考方案1】:
你调用的是ImageObserver的一个静态字段,表示基础图片的宽度现在是可用的,可以取你想要的宽度
System.out.println(frame.getWidth() + " " + frame.getHeight());
注意我调用的是框架对象的方法而不是框架类的静态字段
【讨论】:
不知道我是怎么错过的。但是,当我进行更改时,我仍然得到完全相同的结果。 你是否也改变了这一行 g.drawImage(image, Frame.WIDTH, Frame.HEIGHT, null); 等等,我没有正确更改代码,现在它可以工作了。谢谢! 总是乐于提供帮助 如果此答案解决了您的问题,请考虑通过单击复选标记接受它。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做以上是关于为啥 Frame.Width 和 Frame.Height 返回非常不正确的值的主要内容,如果未能解决你的问题,请参考以下文章