如何延迟重新绘制组件

时间:2015-09-21 08:07:44

标签: java swing jlabel imageicon thread-sleep

我正在做一个骰子游戏"。我将JLabel添加到具有随机骰子图像的面板中。 我希望它们不会同时出现,但会有延迟。 我发现Thread.sleep()完成了这项工作。问题是,当我将sleep()置于for循环中时,循环循环并且所有标签在同一时间重新绘制(在设置睡眠量之后)。我的目标是显示第一个标签,睡眠一段时间,显示下一个标签,睡眠等等。 谢谢你的帮助!

    public void PaintLabels(Player[] players, Die[] dice, String[][] images) throws InterruptedException {
        pnlDice.removeAll(); // Remove everything from the play-area
        pnlDice.setLayout(new java.awt.GridLayout(players.length,6)); // Sets a new layout based on number of players
        JLabel[] image = new JLabel[dice.length]; // Declares an array of labels based on number of dice
        for (int i=0; i<players.length;i++) {
            for (int j=0; j<dice.length; j++) {
                image[j] = new JLabel();
                image[j].setIcon(new ImageIcon(images[i][j])); // Set the image of the label
                pnlDice.add(image[j]); // Add the label to the panel
                Thread.sleep(200);
                pnlDice.revalidate();
                pnlDice.repaint();
            }
        }
    }

0 个答案:

没有答案