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 没有证书,nginx怎么反向代理到只能接受https的公网网站
    • ¥50 成都蓉城足球俱乐部小程序抢票
    • ¥15 yolov7训练自己的数据集
    • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
    • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
    • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
    • ¥20 matlab yalmip kkt 双层优化问题
    • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
    • ¥88 实在没有想法,需要个思路
    • ¥15 MATLAB报错输入参数太多