2015-04-07 129 views
0

我想要使用drawImage()方法在屏幕上繪製.jpg圖像,但它不會繪製。以下是代碼:drawImage()不繪製圖像

public void paint(Graphics g) { 
     Image image = new ImageIcon("tictactoeimg.jpg").getImage(); 
     g.drawImage(image, 0, 0, this); 
} 

.jpg文件位於類的src文件夾中。我該如何解決這個問題,以便繪製圖像?

回答

4
  1. 風俗畫被重寫的paintComponent()方法
  2. 不要做I/O的繪畫方法來完成。繪畫方法是繪畫。
  3. 重寫組件的getPreferredSize()方法以返回組件的大小,否則大小爲(0,0)並且沒有任何內容可以繪製。

有關更多信息,請參閱Swing教程中關於Custom Painting的部分。

但是,真正的問題是你爲什麼要使用drawImage。您可以使用JLabelIcon。本教程還有一個關於How to Use Icons的部分,其中包含一個工作示例。

+0

同意不在繪圖方法中執行I/O操作,但是如果I/O在其他地方完成並且圖像被檢查準備就緒,爲什麼不能用繪畫方法自定義繪圖? 「paintComponent」似乎是一個遠離問題原意的飛躍。例如,如果要擴展[Canvas](http://docs.oracle.com/javase/7/docs/api/java/awt/Canvas.html),則需要覆蓋'paint'。 – Atreys

+1

@Atreys,Canvas是AWT,是的你會覆蓋paint()。 Swing確實有不同的繪畫,'paintComponent()'是覆蓋的正確方法。閱讀教程。 – camickr