Java拼图游戏


前言
UI的搭建包括容器、布局等的学习。涉及到这类的包有awt、swing。awt由于会根据运行平台的不同而使界面产生不同,这里我们采用swing能解决这个不足。


代码如下:

package Java_UI_Swing;

import java.awt.GridLayout;

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

class Jframe_Test04 extends JFrame{

    public Jframe_Test04() {
        this.setTitle("拼图");
        this.setSize(360,400);
        this.setResizable(false);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);

        JPanel panel = new  JPanel();
        panel.setLayout(new GridLayout(3,3));

        for(int i=0;i<8;i++) {
            JButton btn = new JButton();
            btn.setIcon(new ImageIcon("E:\\Java项目_拼图资料\\4\\图片素材\\图片\\"+i+".jpg")); //绝对路径
            panel.add(btn);
        }

        this.add(panel);
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Jframe_Test04 exp = new Jframe_Test04();
        exp.setVisible(true);
    }

}

效果展示:


总结
1. 容器我们用到JFrame。注意这里的JFrame和JPanel有所区别,JFrame会默认放进一个JPanel,并且JPanel不能独立于顶层容器展示。

2. 布局能够让我们省去各种控件排布的计算,当然如果你愿意一个一个算位置的值的话这东西可有可无QAQ。主要布局如下:

  1. FlowLayout 流式布局
  2. BorderLayout 边界布局
  3. GridLayout 网格布局
  4. CardLayout 卡片布局
  5. BoxLayout 盒式布局
  6. GridBagLayout 网格包布局
  7. null 空布局(不使用布局)

3. JFrame默认边界布局(东南西北中);JPanel默认流式布局