2 qq 27565765 qq_27565765 于 2016.04.24 21:58 提问

怎么在循环中转换焦点并设置延时

课程设计。。。纸牌游戏 但需要可视化显示 想利用按钮改变背景表示纸牌反面 但现在就直接全部显示反面结果 不知如何在循环的过程中增加延时的一个一个变换

 package card;

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class GridLayoutDemo extends JFrame {
    static int Flag = -1; // 定义一个全局变量作为正反面的判断条件。
    private JButton[] JBgroup;
    private JButton JB1;
    private JPanel panel;
    private Container container;

    public GridLayoutDemo() {
        super("GridLayout");
        setSize(850, 650);
        container = getContentPane();
        container.setBackground(Color.LIGHT_GRAY);
        JB1 = new JButton("开始游戏!");
        JB1.setFont(new Font("微软雅黑", Font.PLAIN, 14));
        JB1.setBackground(Color.lightGray);
        JB1.setBounds(860, 50, 100, 25);
        JB1.setBorder(BorderFactory.createRaisedBevelBorder());
        JB1.addActionListener(new StartListener());

        panel = new JPanel();
        BorderLayout borderLayout1 = new BorderLayout();
        panel.setBackground(Color.BLACK);
        panel.setLayout(new GridLayout(13, 4, 1, 1));
        JBgroup = new JButton[52];
        setVisible(true);

        for (int x = 1; x <= 13; x++)
            for (int y = 1; y <= 4; y++) {
                int a = (x - 1) * 4 + y - 1;
                JBgroup[a] = new JButton("POKER" + ((x - 1) * 4 + y));
                JBgroup[a].setBackground(Color.GREEN);
                panel.add(JBgroup[a]);
            }
        container.add(JB1, borderLayout1.NORTH);
        container.add(panel, borderLayout1.SOUTH);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        new GridLayoutDemo();

    }

    class StartListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            int i, j;// 建立两个数组,一个存放52张牌的编号,另外一个存放相应编号的纸牌的翻牌记录。
            int[] data = new int[52];
            int[] flag = new int[52];
            for (i = 1; i <= 52; i++) {
                data[i - 1] = i;// 录入52张牌的编号。
                flag[i - 1] = 0;// 将相应编号纸牌的翻牌数初始化为0。
            }
            for (i = 2; i <= 52; i++)// 外循环,基数循环。
            {
                for (j = 1; j <= 52; j++)// 内循环,基数倍数条件判断。
                {       
                    if (j % i == 0) {       
                        data[j - 1] = data[j - 1] * Flag;// 将翻转后的结果更新data中的数据。
                        flag[j - 1]++;// 翻牌一次,即记入flag数组中。
                        if (data[j - 1] < 0) {
                            JBgroup[j - 1].setBackground(Color.yellow);
                        }
                        if (data[j - 1] > 0) {
                            JBgroup[j - 1].setBackground(Color.green);
                            }    
                        }
                }
            }

        }
    }

}


Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!