2017-06-11 50 views
-5

我想根據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(); 
} 
} 
+2

'Frame.WIDTH'?爲什麼你甚至使用它?你想用這個代碼實現什麼?一些圖片鏈接會很好。這不是你如何顯示比例寬度的圖像。 –

+0

閱讀我上面的描述,你會看到。 – jmao

+2

'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

回答

0

你叫什麼是指示基本圖像的寬度現在可用,並且可以採取你想要什麼的ImageObserver的靜態字段

System.out.println(frame.getWidth() + " " + frame.getHeight()); 

注意我所說的幀的方法對象不是幀類的靜態字段

+0

不知道我是如何錯過的。但是,當我做出改變時,我仍然得到完全相同的結果。 – jmao

+0

你是否也改變過這一行g.drawImage(image,Frame.WIDTH,Frame.HEIGHT,null); – urag

+0

等一下,我沒有正確地更改代碼,現在它正在工作。謝謝! – jmao

相關問題