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

JavaSwing尝试用矩形制作一个小动画,java,swing,animation,jpanel,drawrectangle,Java,Swing,Animation,Jpanel,Drawrectangle,我试着做一个小游戏,但首先我要学习如何制作动画:)这将是一个2D游戏。 所以,我的问题是,如果我只是试图画一个矩形,它的工作,当我试图动画(我做了很多代码,但没有工作:()它不工作 有人可以帮我修复它或添加一些提示我如何尝试这样做 public class Window extends JPanel implements ActionListener { Timer tm = new Timer(5 , this); int x2 = 0 , velX = 2; s

我试着做一个小游戏,但首先我要学习如何制作动画:)这将是一个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);

查看更多信息


另外,我建议您查看一下,您的代码运行良好,只是您忘记将组件(您将其命名为
Window
)添加到容器中(
JFrame
),要这样做,请在
Window()
构造函数的末尾添加
f.add(this);

查看更多信息


另外,我建议你看一看,你的代码从不在框架中添加
窗口
。但如果你添加了它,就我所知,它工作得很好。我建议你将类名从
窗口
更改为其他名称(如MyWindow/userGUI/等)。有一个名为it的AWT类可能会在将来给您带来一些问题。您的代码从不在框架中添加
窗口
。但如果您确实添加了它,就我所知,它工作得很好。我建议您将类名从
窗口
更改为其他名称(如MyWindow/userGUI/等)。有一个AWT类称为“它可能在将来给你带来一些问题”。@BalázsSzmetana,如果Onur的答案回答了你的问题,请单击复选标记将其标记为answer@BalázsSzmetana,如果Onur的答案回答了您的问题,请单击复选标记将其标记为答案