Java Animate JLabel

Поэтому я создаю базовое приложение, в котором я хочу разместить JLabel в нижней части экрана, который начинается в левом нижнем углу и перемещается, стиль анимации в правый нижний угол за заданное время и статичное изображение в центре. , Для этого я создал JFrame с JPanel, используя BorderLayout. Существует JLabel с ImageIcon, добавленным в BorderLayout.CENTER, и JPanel в BorderLayout.SOUTH. Мой код, хотя он написан на скорую руку и далеко не красив:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension; 
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;
import javax.swing.BorderFactory;

public class GameWindow extends JPanel{

private static JLabel mainWindow, arrowLabel, arrowBox;
protected static JFrame frame;
protected static JPanel arrows;

public static int x = 600;

public GameWindow(){
    mainWindow = new JLabel("Center");
    arrowLabel = new JLabel("Moving");
    arrows = new JPanel();
    arrows.setSize(600, 100);
    arrows.setLayout(null);
    arrowBox = new JLabel("");
    arrowBox.setBounds(0, 0, 150, 100);
    arrowBox.setPreferredSize(new Dimension(150, 100));
    arrowBox.setBorder(BorderFactory.createLineBorder(Color.black));
    arrows.add(arrowBox);
    this.setSize(600,600);
    this.setLayout(new BorderLayout());
    this.add(mainWindow, BorderLayout.CENTER);
    this.add(arrows, BorderLayout.SOUTH);
}

public static void main(String[] args)
{
    GameWindow g = new GameWindow();
    frame = new JFrame("Sword Sword Revolution");
    frame.add(g);
    frame.setSize(600,600);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);

    Timer t = new Timer(1000, new ActionListener(){

        @Override
        public void actionPerformed(ActionEvent e) {
            arrows.add(arrowLabel);
            arrowLabel.setBounds(x, 100, 100, 100);
            x-=50;
            arrows.repaint();
            frame.repaint();
        }

    });
    t.start();
}

}

ImageIcon в центре JLabel выглядит нормально, а пустой JLabel с рамкой появляется внизу, но я не могу получить вторую JLabel с изображением стрелки, чтобы отобразиться на экране. В конце концов я переключусь на scheduleAtFixedRate, чтобы непрерывно перемещать JLabel, но сейчас я даже не могу заставить изображение появляться на экране.

Я также понимаю, что, скорее всего, я не смогу использовать FlowLayout для этого, так как я понимаю, что он не позволяет вам устанавливать расположение ваших компонентов. Я попытался использовать нулевую разметку, но с нулевой разметкой пустой JLabel с рамкой не появляется. Я едва могу разглядеть верхнюю часть границы у нижнего края рамки, но даже с помощью setLocation я не могу заставить ее появляться там, где я хочу.

Очевидно, мой мыслительный процесс имеет недостатки, поэтому любая помощь будет оценена.

Ответы на вопрос(3)

Ваш ответ на вопрос