Java Swing 尝试用矩形制作一个小动画

标签 java swing animation jpanel drawrectangle

我尝试做一个迷你游戏,但首先我学习如何制作动画:)这将是一个 2D 游戏。 所以我的问题是,如果我只是尝试绘制一个矩形,当我尝试动画时它的工作(我做了很多代码但没有工作:()它不起作用。

有人可以帮助我修复它或添加一些提示我如何尝试做到这一点。

public class Window extends JPanel implements ActionListener {

    Timer tm = new Timer(5 , this);

    int x2 = 0 , velX = 2;

    static int x= 500;
    static int y= 500;

    public void paintComponent(Graphics g){

        super.paintComponent(g);

        g.setColor(Color.RED);
        g.fillRect(x2, 30, 30, 30);

        tm.start();

    }

    public Window(){

        JFrame f = new JFrame();
        f.pack();
        f.setTitle("Game");
        f.setSize(x,y);
        f.setVisible(true);
        f.setLocationRelativeTo(null);
        f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);
    }

    /*public void paint(Graphics g){


        Graphics2D g2d = (Graphics2D) g;
        Rectangle rect = new Rectangle(50, 50, 50, 50);


        g2d.translate(25, 25);
        g2d.rotate(Math.toRadians(45));
        g2d.draw(rect);
    }*/

    public static void main(String [] args) throws InterruptedException{
        Game g = new Game();
        g.setName("Test");
        System.out.println(g.getName());
        g.setScore();
    }

    @Override
    public void actionPerformed(ActionEvent e) {

        x2 = x2 + velX;
        repaint();

    }

}

最佳答案

您的代码工作正常,只是您忘记将组件(您将其命名为 Window)添加到容器(在本例中为 JFrame)。为此,请在 Window() 构造函数末尾添加 f.add(this);

看看swing-components-and-containers了解更多信息。

我还建议您看看Double-buffer-in-standard-Java-AWTGame loops!

关于Java Swing 尝试用矩形制作一个小动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37998427/

相关文章:

java - getCountry 方法错误

java - 如何配置 Netty 以拥有单个工作线程?

Java Swing 像素不准确

java - 当 JTextField 失去焦点时,如何使添加到 JtextField 的弹出菜单不可见?

java - Android实现了一个带有两个clip textview的progressBar

jquery - 给Active类添加动画效果的问题

java - 如何将 Eclipse 项目设置为只读?

java - 无法在 Android 中解析为整数

java - 为什么我的 NumberFormatException 没有被我的 try-catch 捕获?

iOS 动画 >> 如何为单个对象设置动画以移动多个位置