有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何延迟重新绘制组件

我在做一个“骰子游戏”。我正在将jLabel添加到带有随机骰子图像的面板中。 我希望他们不要同时出现,而要推迟。 我找到了那根线。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) 个答案