2012-02-25 12 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()は描画されません

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

+0

ウィンドウのサイズを変更して再描画します。あなたが最初にウィンドウを描画すると、私の野生の推測は、画像がまだロードされていないことになります。 – ZeissS

+0

@ZeissSすなわち 'Toolkit.getDefaultToolkit()。createImage(" 1.jpg ");'このメソッドは画像をフルに読み込まなくても返しますか? – eXXXXXXXXXXX2

+0

はい、そうです。 – ZeissS

答えて

4

変更

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

、あなたが行くように良いことがあります。

+0

これは彼の問題を解決するとは思わないが、@ eXXXXXが何を言いたいのかを待たなければならない。 –

+0

はい、イメージが読み込み可能であると仮定すると、サイズ変更後に表示されるように見えます。 OPが何を言っているのか見てみましょう。 – stryba

+0

もし彼が何か言ったら! :( –

関連する問題