Java 无法显示图像

Java 无法显示图像,java,drawimage,Java,Drawimage,我是编程新手,你能告诉我我的代码有什么问题吗。这个 Fillova运行良好,但尝试用.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.Buff

我是编程新手,你能告诉我我的代码有什么问题吗。这个 Fillova运行良好,但尝试用.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);
    }
}


}

我不确定你的问题在哪里,但我最好的猜测是:

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

我已经复制/粘贴了你的代码,我使用了我的自定义图像,它与我的作品很好

在eclipse项目中创建一个文件夹,但不在源目录中(!!!),然后参考如下图像:

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

写入
if(img1==null)System.out.println(“null”)
Image img1
下,查看它是否为null。不要在
Swing
程序中使用
Thread.sleep()
。使用
Swing Timer
将答案设置为正确答案请^^^,如果它解决了您的问题(似乎解决了^^^)是的,您解决了。。。答案集。