движущийся JLabel в Java - PullRequest
       11

движущийся JLabel в Java

0 голосов
/ 05 мая 2018

Это программа, которая не работает:

    JLabel pic[][] = new JLabel[7][9];

    try{
        for(int i = 0; i < 70; i ++){
            pic[x_position][y_position].setLocation((10 + 70 * x_position) + i, (10 + 70 * y_position));
            pic[x_position2][y_position2].setLocation((10 + 70 * x_position2) - i, (10 + 70 * y_position2));

            Thread.sleep(5);  
        }
    }
    catch(Exception f){
    }

Он появляется на последней позиции после задержки, но он не двигался, кто-нибудь знает почему? И как мне это улучшить?
Спасибо!

1 Ответ

0 голосов
/ 05 мая 2018

Сначала прочитайте Параллельность в Swing , чтобы понять, почему у вас возникают проблемы

Во-вторых, прочитайте Как использовать Swing Timers для решения вашей проблемы

Решение может выглядеть примерно так ...

Timer timer = new Timer(5, new ActionListener() {
    int count = 0;

    @Override
    public void actionPerformed(ActionEvent e) {
        if (count >= 70) {
            ((Timer) e.getSource()).stop();
            return;
        }
        pic[x_position][y_position].setLocation((10 + 70 * x_position) + i, (10 + 70 * y_position));
        pic[x_position2][y_position2].setLocation((10 + 70 * x_position2) - i, (10 + 70 * y_position2));
    }
});
timer.start();
...