2012-02-25 6 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

+0

@ZeissS 즉 Toolkit.getDefaultToolkit(). createImage ("1.jpg");'이 메소드는 이미지를 완전히로드하지 않아도 반환됩니까? – eXXXXXXXXXXX2

+0

네, 그렇습니다. – ZeissS

답변

4

변경

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

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

에 당신이 갈 수 있어야한다.

+0

나는 이것이 그의 문제를 해결할 것이라고 생각하지 않지만, @ eXXXXX가 무엇을 말하려고하는지 기다려야 할 것입니다. –

+0

예, 이미지를로드 할 수 있다고 가정하면 크기 조정 후 나타나는 것처럼 보입니다. OP가 말한 것을 보자. – stryba

+0

그가 뭐라해도! : ( –

관련 문제