我是编程的新手,非常感谢您的帮助。我创建了此代码,我想用.gif文件/对象替换fillOval。什么修改
 我应该表演吗?

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JComponent;
import javax.swing.JFrame;
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.fillOval(x, y, 50, 50);


    }

        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(3);
        }
    }


    }    >

最佳答案

首先,您应该使用paintComponent()而不是paint()

要回答您的问题,请使用g.drawImage()。这样的事情。

protected void paintComponent(Graphics g){
    super.paintComponent(g);

    try {
        BufferedImage img = ImageIO.read(new File("image.gif"));
        g.drawImage(img, xLocation, yLocation, width, height, this);
    } catch (Exception ex){
        ex.printStackTrace();
    }
}


Graphics#drawImage()

关于java - 如何插入Image .gif文件而不是filloval?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20592474/

10-09 00:03