【发布时间】: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 变得非常重要的地方
标签: java image jframe height width