java中移动的JLabel

时间:2018-05-04 22:06:27

标签: java jlabel

这是不起作用的程序:

    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 :(得分:0)

首先,请阅读Concurrency in Swing以了解您遇到问题的原因

其次,请阅读How to use 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();