*問題が解決しました - すべての回答に感謝します。とても役に立ちました!
学校の課題で小さなさいころゲームを作っているのですが、この問題に遭遇しました。多数のサイコロアイコンをすばやく循環させて、サイコロの転がしをシミュレートしたいと考えています。ただし、これ自体は問題の原因ではありません。JFrameで直接「アニメーション」を作成すると、正しく表示されます。私は以下のコードでそれを行いました:
public class Example{
        private static ImageIcon die1 = new ImageIcon("terning1.jpg");
        private static ImageIcon die2 = new ImageIcon("terning2.jpg");
        private static ImageIcon die3 = new ImageIcon("terning3.jpg");
        private static ImageIcon die4 = new ImageIcon("terning4.jpg");
        private static ImageIcon die5 = new ImageIcon("terning5.jpg");
        private static ImageIcon die6 = new ImageIcon("terning6.jpg");
        private static JLabel die = new JLabel(die1);
        private static Random generator = new Random();
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(die);
        frame.pack();
        frame.setVisible(true);
        for (int i = 0; i < 100; i++) {
            int x = generator.nextInt(6) + 1;
            switch(x){
                case 1 : die.setIcon(die1);
                    break;
                case 2 : die.setIcon(die2);
                    break;
                case 3 : die.setIcon(die3);
                    break;
                case 4 : die.setIcon(die4);
                    break;
                case 5 : die.setIcon(die5);
                    break;
                case 6 : die.setIcon(die6);
                    break;
            }
            //Make the loop wait for 50 millis
            long a, b;
            a = System.currentTimeMillis();
            do {
                b = System.currentTimeMillis();
            } while ((b-a) < 50);           
        }
    }       
}
これで問題なく動作しますが、明らかに、JFrame を最初に開いたときにのみ動作します。だから私はサイコロを振るボタンを追加したいと思います。しかし、actionlistener を使用して JButton を追加し、for ループを actionPerformed メソッドに配置すると、ループが終了するまでプログラムが停止し、ループ内の最後のダイのみが表示されます。例:
public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new FlowLayout());
        frame.add(button);
        frame.add(die);
        button.addActionListener(new ButtonListener());
        frame.pack();
        frame.setVisible(true);
    }
    private static class ButtonListener implements ActionListener {
        public void actionPerformed(ActionEvent event) {
            for (int i = 0; i < 100; i++) {
                int x = generator.nextInt(6) + 1;
                switch (x) {
                    case 1:
                        die.setIcon(die1);
                        break;
                    case 2:
                        die.setIcon(die2);
                        break;
                    case 3:
                        die.setIcon(die3);
                        break;
                    case 4:
                        die.setIcon(die4);
                        break;
                    case 5:
                        die.setIcon(die5);
                        break;
                    case 6:
                        die.setIcon(die6);
                        break;
                }
                //Make the loop wait for 50 millis
                long a, b;
                a = System.currentTimeMillis();
                do {
                    b = System.currentTimeMillis();
                } while ((b - a) < 50);
            }
これを解決する方法に関するヒントはありますか?よろしくお願いします!