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。主要布局如下:
- FlowLayout 流式布局
- BorderLayout 边界布局
- GridLayout 网格布局
- CardLayout 卡片布局
- BoxLayout 盒式布局
- GridBagLayout 网格包布局
- null 空布局(不使用布局)
3. JFrame默认边界布局(东南西北中);JPanel默认流式布局