2013-10-31 5 views
0
package chapter4; 

import java.awt.Color; 
import java.awt.Graphics;`` 
import java.awt.Graphics2D; 
import java.awt.Image; 
import java.awt.Toolkit; 
import java.net.URL; 
import javax.swing.JFrame; 

/** 
* 
* @author Ale 
*/ 
public class DrawImage extends JFrame{ 
    private Image image; 
    public static void main(String[] args){ 
     new DrawImage(); 
    } 

    public DrawImage(){ 
     super("DrawImage"); 
     setSize(600,600); 
     setVisible(true); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     Toolkit tk= Toolkit.getDefaultToolkit(); 
     image= tk.getImage(getURL("yoshi.PNG"));     

    } 

    private URL getURL(String filename){ 
     URL url; 
     try{ 
      url= this.getClass().getResource(filename); 
     } 
     catch(Exception e){} 
     return null; 
    } 

    /** 
    * 
    * @param g 
    */ 
    @Override 
    public void paint(Graphics g){ 
     Graphics2D g2d=(Graphics2D) g; 
     g2d.setBackground(Color.WHITE); 
     g2d.fillRect(0, 0, getSize().width, getSize().height); 

     g2d.drawImage(image, 20, 40, this); 
    } 

} 

이미지는이 클래스와 같은 폴더에 있지만 오류를 발생시키고 이미지를 표시하지 않습니다. 오류는 다음과 같습니다.DrawImage가 Java에서 작동하지 않음

등이 있습니다. 제발 도와주세요. 파일은 mario의 yoshi png 파일입니다.

+2

'JFrame'과 같은 최상위 컨테이너의'paint'를 오버라이드하는 대신'JPanel'을 사용하고'paintComponent' 메소드를 오버라이드해야합니다. 또한 항상'super.paintXxx'를 호출해야합니다. 그렇지 않으면 매우 불쾌한 페인트 효과로 끝날 수 있습니다. 자세한 내용은 [사용자 정의 페인팅 수행] (http://docs.oracle.com/javase/tutorial/uiswing/painting/)을 참조하십시오. 또한 'JLabel'을 사용하여 동일한 결과를 얻을 수 있습니다. – MadProgrammer

답변

3

getUrl() 메소드에서 null을 반환합니다. url 객체를 반환해야합니다.