学了3*3的拼图游戏,记录一下顺便理下思路
工具 eclipse
该拼图游戏为窗体程序,需要new 一个窗体对象,并设置窗体的相关属性
需要设置窗体的大小,位置,可见性 setVisiable ,以及点击关闭窗体程序
package game;
import java.awt.BorderLayout;
import java.awt.Color;import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;public class GameFrame {
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame frame = new JFrame();
frame.setTitle("拼图游戏");
frame.setSize(310,340);
//设置窗体相对谁进行定位,若为null,则相对电脑显示屏进行定位,并且居中显示
frame.setLocationRelativeTo(null);
frame.setResizable(false);//设置窗体不可改变大小
//窗体关闭时结束程序
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);//设置窗体可见 }
}
将面板类与业务逻辑写入一个类中
首先定义
public class GamePanel extends JPanel {
private int n;//n代表几乘几
private JButton[] btns;//按钮代表拼图中的每个移动的格子
private ImageIcon[] icons;//按钮中的图片
public GamePanel(){//构造方法,在new对象时自动调用一次
n = 3;
setLayout(new GridLayout(n,n));//使用网格布局
btns = new JButton[n*n];//初始格子数(n*n)
icons = new ImageIcon[n*n];
//两道初始化,先初始化容器数量,再初始化内容
//初始化“容器”中各个图片
for(int i = 0;i<icons.length-1;i++){
icons[i] = new ImageIcon("pic_"+i+".jpg");
}
icons[icons.length-1] = null;//最后一个为空
//给每个按钮指定图片,此时按钮上的图片是固定且正确的
for(int i = 0;i<btns.length;i++){
btns[i] = new JButton(icons[i]);//创建按钮时指定图片
add(btns[i]); }
}
}