qq_27565765 2016-04-24 13:58
浏览 732

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

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

 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);
                            }    
                        }
                }
            }

        }
    }

}


  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 mmocr的训练错误,结果全为0
    • ¥15 python的qt5界面
    • ¥15 无线电能传输系统MATLAB仿真问题
    • ¥50 如何用脚本实现输入法的热键设置
    • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
    • ¥30 深度学习,前后端连接
    • ¥15 孟德尔随机化结果不一致
    • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
    • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
    • ¥15 谁有desed数据集呀