2012-02-25 77 views
2
import java.awt.*; 
import javax.swing.*; 

public class Main 
{ 
    JFrame jf; 
    Main() 
    { 
     jf=new JFrame(); 
     jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     jf.add(new MyCanvas()); 
     jf.pack(); 
     jf.setVisible(true); 
    } 
    public static void main(String[] args) 
    { 
     SwingUtilities.invokeLater(new Runnable() 
     { 

      @Override 
      public void run() 
      { 
       new Main(); 
      } 
     }); 
    } 
} 
class MyCanvas extends JComponent 
{ 
    Image img; 
    MyCanvas() 
    { 
     setPreferredSize(new Dimension(200,200)); 
     img=Toolkit.getDefaultToolkit().createImage("1.jpg"); 
    } 
    public void paintComponent(Graphics g) 
    { 
     super.paintComponent(g); 
     g.drawImage(img,0,0,null); 
    } 
} 

我想用自己的paintComponent方法獲得畫布,但有時候我會看到沒有圖像的空窗口。我需要調整窗口的大小才能看到此圖像。什麼是問題?爲什麼drawImage有時不畫?drawImage()不繪製

+0

調整窗口的大小來發出重繪。我瘋狂的猜測是,當您最初繪製窗口時,圖像尚未加載。 – ZeissS 2012-02-25 15:12:34

+0

@ZeissS即'Toolkit.getDefaultToolkit()。createImage(「1.jpg」);'這種方法即使沒有滿載圖像也會返回? – eXXXXXXXXXXX2 2012-02-25 15:17:03

+0

是的,情況就是這樣。 – ZeissS 2012-02-26 10:28:15

回答

4

變化

g.drawImage(img,0,0,null); 

g.drawImage(img,0,0,this); 

,你應該是好去。

+0

我不認爲這可以解決他的問題,但我們必須等待,看看@ eXXXXX ......必須說些什麼。 – 2012-02-25 18:29:50

+0

是的,它應該,假設他的圖像是可加載的,它看起來像調整大小後顯示的那樣。讓我們看看OP說的話。 – stryba 2012-02-25 18:54:06

+0

如果他說了什麼! :( – 2012-02-25 19:24:28

相關問題