计划通过一个小游戏来介绍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方法
}
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的初始界面了。
接下来就要做的是点击按钮,按钮变色的策略。以及检测游戏完成的功能。下次再讲。
转载于:https://blog.51cto.com/cnjava/303654