2013-12-17 43 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'下,查看它是否为空 –

+1

不要在'Swing'程序中使用Thread.sleep()。使用'Swing Timer' –

回答

0

我不知道您的问题,但我最好的猜猜会是:

您的图像位置不适合! (忽略其他类,它只是一个测试项目^^)

我复制/粘贴了你的代码,我用我的自定义图像,它对我来说工作正常!

location of image

作出夹在Eclipse项目,但不是在你的源代码目录(!),然后是指这样的图像:

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

很多感谢!文件位置已更改为不在src中,但在项目中。 – NatiLevi

+0

请将答案设为正确答案,请^^,如果它解决了您的问题(看起来确实如此^^) –

+0

非常感谢!祝你好运,迷你网球! –