我想根據JFrame的框架和寬度顯示圖像,以便根據Frame的大小按比例顯示圖像(我的程序是這樣設計的無法使用任何佈局管理器)。爲什麼Frame.Width和Frame.Height返回非常不正確的值
但是,當我嘗試根據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'?爲什麼你甚至使用它?你想用這個代碼實現什麼?一些圖片鏈接會很好。這不是你如何顯示比例寬度的圖像。 –
閱讀我上面的描述,你會看到。 – jmao
'public static final int WIDTH = 1;'和'public static final int HEIGHT = 2;'是'imageUpdate'方法中使用的標誌,非常確定它們沒有按照你認爲的那樣做 - 這是讀取[JavaDocs](https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html)變得非常重要 – MadProgrammer