2013-12-17 7 views
0

저는 프로그래밍에 새로운 사람입니다. 제 코드에서 어떤 문제인지 알려주실 수 있습니까? fillOval 실패 얻을 잘 작동하지만 .gif 참고 파일로 교체하려고, 창은 어디에 문제가이미지를 표시 할 수 없습니다.

import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.Image; 
import java.awt.RenderingHints; 
import java.awt.Toolkit; 
import java.awt.image.BufferedImage; 
import java.awt.image.ImageObserver; 
import java.io.File; 
import java.io.IOException; 

import javax.imageio.ImageIO; 
import javax.swing.ImageIcon; 
import javax.swing.JComponent; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

@SuppressWarnings("serial") 
public class Game extends JPanel { 

int x; 
int y; 

int inix=500; 
int iniy=500; 

int i=0; 
private void moveBall() { 
    /*x = x + 1; 
    y = y + 1;*/ 
    double degrees=(double) i; 
    double radians=Math.toRadians(degrees); 
    double Sinu=Math.sin(radians); 
    double Sinu200=Math.sin(radians)*200; 
    int SinuInt=(int) Sinu200; 
    //y=500+SinuInt; 
    y=iniy+SinuInt; 
    double Cos=Math.cos(radians); 
    double Cos200=Math.cos(radians)*200; 
    int CosInt=(int) Cos200; 
    //x=500+CosInt; 
    x=inix+CosInt; 


    i++; 
    if (i==360){ i=0;} 

      //System.out.println(Sinu+" "+Sinu200+" "+SinuInt +" "+x); 

     } 


private int sin(double radians) { 
    // TODO Auto-generated method stub 
    return 0; 
} 

    @Override 
public void paint(Graphics g) { 
    super.paint(g); 
    Graphics2D g2d = (Graphics2D) g; 
    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); 
    //g2d.setColor(Color.red); 
    //g2d.fillOval(x, y, 50, 50); 
    Image img1 = Toolkit.getDefaultToolkit().getImage("src/Images/MyIm.gif"); 
    g2d.drawImage(img1, x, y, this); 


} 

    public static void main(String[] args) throws InterruptedException { 
    JFrame frame = new JFrame("Mini Tennis"); 
    Game game = new Game(); 
    frame.add(game); 
    frame.setSize(1000, 1000); 
    frame.setVisible(true); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    while (true) { 
     game.moveBall(); 
     game.repaint(); 
     Thread.sleep(2); 
    } 
} 


} 
+0

쓰기'경우 (img1로 == 널 (null)) System.out.println ("null");'Image img1'에서 null인지 아닌지 확인하기 –

+1

'Swing' 프로그램에서'Thread.sleep()'을 사용하지 마십시오. '스윙 타이머 '사용 –

답변

0

난 잘 모르겠어요 ... 볼 아무것도 열,하지만 내 최선입니다 추측은 다음과 같습니다 :

이미지 위치가 적합하지 않습니다! (다른 클래스는 무시하고 그냥 테스트 프로젝트 일뿐입니다 ^^)

코드를 복사/붙여 넣었습니다. 사용자 정의 이미지를 사용했는데 잘 작동합니다!

location of image

이클립스 프로젝트에 폴더를 만들 수 있지만 소스 디렉토리 IN (!) 다음과 같은 이미지를 참조하십시오

Image img1 = Toolkit.getDefaultToolkit().getImage("img/index.png"); 
+0

많이 감사드립니다 !!! 파일 위치가 프로젝트에서 src가 아닌 것으로 변경되었습니다. – NatiLevi

+0

정답으로 정답주세요 ^^, 문제를 해결하면 (^^) –

+0

고마워요! 미니 테니스와 행운을 빌어 요! –