A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

罗韬

中级黑马

  • 黑马币:4

  • 帖子:67

  • 精华:0

© 罗韬 中级黑马   /  2015-4-25 23:19  /  488 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.gz.game;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Game {

        // 定义数组存储按钮
        static JButton[] jbt = new JButton[25];
       
        //定义变量存储图片路径
        static String Url="";

        /**
         * @param 开灯游戏
         */
        public static void main(String[] args) {
                //创建音乐对象
                GameSound  gs = new GameSound();
                //调用播放方法
                gs.playBgSound("music/shuang.mp3");
               
                // 1.创建窗体对象
                JFrame jf = new JFrame();
                // 1.2设置大小
                jf.setSize(300, 400);
                // 1.3设置居中 null
                jf.setLocationRelativeTo(null);
                // 1.4设置标题
                jf.setTitle("开灯游戏1.2");
               
                //关闭窗体结束程序
                jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                /********* 游戏开始需要的组件 *******/
                // 2.得到游戏需要的组件
                // 2.1创建按钮组件和文本组件
                JButton jb = new JButton("开始");
                JLabel jlstart = new JLabel("重新开始");
               
                //给开始添加事件
                jb.addActionListener(new ActionListener() {
                       
                        @Override
                        public void actionPerformed(ActionEvent arg0) {
                                for (int i = 0; i < jbt.length; i++) {
                                        jbt[i].setIcon(new ImageIcon("src/img/1.png"));
                                }
                        }
                });

                // 2.2创建面板组件
                JPanel jpup = new JPanel(); // 分为上面板
                JPanel jpdown = new JPanel(); // 分为下面板

                /********** 在面板添加25个按钮 ********/
                // 3.设置面板布局
                jpup.setLayout(new GridLayout(5, 5));

                // 2.3添加25个按钮 ...
                for (int i = 0; i < 25; i++) {
                        jbt[i] = new JButton(new ImageIcon("./src/img/1.png"));

                        // 通过内部类属性得到id
                        jbt[i].setActionCommand(String.valueOf(i));

                        // 得到图片路径
                        Url =jbt[i].getIcon().toString();

                        // 监听事件 处理图片点击
                        jbt[i].addActionListener(new ActionListener() {

                                public void actionPerformed(ActionEvent e) {
                                        // 得到下标
                                        int num = Integer.valueOf(e.getActionCommand());

                                        if (num == 0) {
                                                // 根据下标改变图片
                                                chages(jbt[num]);
                                                chages(jbt[num + 1]);
                                                chages(jbt[num + 5]);
                                        } else if (num == 4) {
                                                chages(jbt[num]);
                                                chages(jbt[num - 1]);
                                                chages(jbt[num + 5]);
                                        } else if (num == 20) {
                                                chages(jbt[num]);
                                                chages(jbt[num - 5]);
                                                chages(jbt[num + 1]);
                                        } else if (num == 24) {

                                                chages(jbt[num]);
                                                chages(jbt[num - 1]);
                                                chages(jbt[num - 5]);
                                        } else if (num > 0 && num < 4) {
                                                chages(jbt[num]);
                                                chages(jbt[num - 1]);
                                                chages(jbt[num + 1]);
                                                chages(jbt[num + 5]);
                                        } else if (num > 20 && num < 24) {
                                                chages(jbt[num]);
                                                chages(jbt[num - 1]);
                                                chages(jbt[num + 1]);
                                                chages(jbt[num - 5]);
                                        } else if (num % 5 == 0) {
                                                chages(jbt[num]);
                                                chages(jbt[num - 5]);
                                                chages(jbt[num + 1]);
                                                chages(jbt[num + 5]);
                                        } else if (num % 5 == 4) {
                                                chages(jbt[num]);
                                                chages(jbt[num - 5]);
                                                chages(jbt[num - 1]);
                                                chages(jbt[num + 5]);
                                        } else {
                                                chages(jbt[num]);
                                                chages(jbt[num - 5]);
                                                chages(jbt[num + 1]);
                                                chages(jbt[num + 5]);
                                                chages(jbt[num - 1]);
                                        }

                                }
                        });
                        // 添加按钮到面板
                        jpup.add(jbt[i]);
                }

                // 2.4添加组件到窗体中e
                jpdown.add(jb); // 添加开始按钮
                jpdown.add(jlstart); // 添加文本文字

                // 2.5.将布局的面板添加到窗体进行显示
                jf.add("South", jpdown); // 添加上面板
                jf.add(jpup); // 添加下面板

                // 1.5显示窗体
                jf.setVisible(true);

        }

        // 定义改变图片的方法
        public static void chages(JButton jb) {
       
                // 判断图片标识
                if (jb.getIcon().toString().equals(Url)) {
                        jb.setIcon(new ImageIcon("./src/img/2.png"));
               
                } else {
                        jb.setIcon(new ImageIcon("./src/img/1.png"));
                       
                }
        }

}

8 个回复

倒序浏览
看不懂。。。
这是学到哪里了???
给点提示吧。。。
回复 使用道具 举报
给楼主赞一个
回复 使用道具 举报
不明觉厉
回复 使用道具 举报
这用到了 awt 和 swing,属于 GUI 这块,图形用户界面~

Android上不知是否会用到呢??
回复 使用道具 举报
咱这课程不是不讲GUI吗?
回复 使用道具 举报
Cat 中级黑马 2015-5-13 21:38:18
7#
学习一下~
回复 使用道具 举报
大神,我能求点分吗???
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马