计划通过一个小游戏来介绍java面向对象编程,事件处理机制,以及swing相关的知识。
本来这个是08年在西安讲授java -oop时就已经给学生上课演示过的现场例子,现在拿出来晒晒。
 游戏初始界面:25个红色的小方块(实际上就是25个按钮)。
如图1
                图1游戏初始界面
点击某一个方块之后,被点击的方块和它周围相邻的方块都变成×××。
如图2
             
  图2-点击中间方块之后的效果
                           图3-点击左上角之后的效果
                      图4-全部完成之后的效果。
下面我们来介绍开发过程。
         首先需要一个Button,这个Button可以从swing的jbutton继承而来。但是我们的button要会变颜色。并且为了后边的需要,我们最好给它2个属性,用来表示x,y坐标。代码如下:

 
package com.pengzj.openwindow;

import java.awt.Color;

import javax.swing.*;

//先定义我们自己的具有特色的按钮,当然最好继承于JButton
//这种按钮它带有X,Y坐标,它有自己的变颜色的方法
/*
* @author pengzj
* @date 2008/02/19
*/

public class MyButton extends JButton{
    
                
                     private int xCord; //x坐标
                     private int yCord; //y坐标
                    
                     public MyButton(){
                        
                    }
                    
                     //此构造方法可以设置这个按钮的X,Y坐标
                     public MyButton( int x, int y){    
                     this.xCord=x;
                     this.yCord=y;
                     this.setBackground(Color.red); //设置按钮的初始颜色
                    }
                    
                     //改变按钮颜色的方法
                     public void changeColor(){
                     if( this.getBackground()==Color.red){ //如果按钮的背景色是白色则变成兰色,反之亦然(vice versa)
                         this.setBackground(Color.yellow);             //当然你可以任意设置你自己需要的颜色
                     } else
                     {
                         this.setBackground(Color.red);
                     }
                    }

//省略X,y属性的getter/setter方法                    
            
}

 
然后生成游戏的主界面。

/*******************************************
* T110班开窗户游戏v1.0版(上课现场演示版)
* @author pengzj
* @date :2008/02/19
*********************************************/

package com.pengzj.openwindow;

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

import javax.swing.*;

public class Game {
         final static int N=5;
                JFrame frame;
                JPanel btnPanel;
                MyButton[][] buttons; //声明一个二维数组
                
                 public Game() {
     init();
    }
         public void init(){
            
             //设定一个网格布局,n*n
            GridLayout gridLayout = new GridLayout(N,N);
            btnPanel = new JPanel(gridLayout);
             //实例化一个5*5数组
            buttons = new MyButton[N][N];
             int i=0;
             int j=0;
            
            
                 for(i=0;i<N;i++){
                     for(j=0;j<N;j++){
                     buttons[i][j]= new MyButton(i,j); //赋一个坐标,相当于贴标签
                            btnPanel.add(buttons[i][j]); //依次将每个button放到panel中去
                            buttons[i][j].addActionListener( new buttonHandler(buttons[i][j]));
                        
                    }
                 }
            
                    
            frame = new JFrame( "翻按钮游戏");
            frame.getContentPane().add(btnPanel);
            frame.setSize(400,300);
            frame.validate();
            frame.setVisible( true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            
         }
}    

运行之后就可以看到如图1的初始界面了。
接下来就要做的是点击按钮,按钮变色的策略。以及检测游戏完成的功能。下次再讲。