文章目录
- 前言
- 一、布局介绍
- 1.边界布局
- 2.网格布局
- 3.网格组布局.
- 总结
前言
Swing程序中还有两种方式边界布局,网格布局供程序员使用。这两种布局方式更能体现出软件日常制作的排列布局格式。
一、布局介绍
1.BorderLayout边界布局
语法:new BorderLayout
使用场景:c.setLayout( new BorderLayerout )
import java.awt.*;
import javax.swing.*;
//导入相关swing组件
public class Layout extends JFrame{
//继承JFrame窗体类
public Layout(){
//编写窗体布局方法
setTitle("边界布局管理器");
Container c = getContentPane();
//获取容器
c.setLayout(new BorderLayout());
//设置布局方式为:边界布局 括号中实例化
JButton w = new JButton("狼");
JButton n = new JButton("狼");
JButton e = new JButton("狼");
JButton s = new JButton("狼");
JButton m = new JButton("羊");
//创建了五个组件对于五个位置
c.add(w, BorderLayout.WEST);
c.add(e, BorderLayout.EAST);
c.add(n, BorderLayout.NORTH);
c.add(s,BorderLayout.SOUTH);
c.add(m,BorderLayout.CENTER);
//向容器中添加组件并且设置好对应的布局位置。
setBounds(200,200,800,800);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new Layout();
}
}
输出结果:
BorderLayout边界布局分为了上北,下南,左西,右东,中间,五个部分组成
注意:(1)添加组件时,需要指定区域,否则默认添加到CENTER区
(2)同一区域的组件会相互覆盖。
2.GridLayout网格布局
语法:new GridLayout(int 列,int 行)
new GridLayout(int 列,int 行,int 水平间距,int 垂直间距)
import java.awt.*;
import javax.swing.*;
//导入相关swing组件
public class Layout extends JFrame{
//继承JFrame窗体类
public Layout(){
//编写窗体布局方法
setTitle("边界布局管理器");
Container c = getContentPane();
//获取容器
c.setLayout(new GridLayout(4,4,2,2));
//设置布局方式为:网格布局,设置网格的几行几列,水平竖直间距
for(int i = 0 ;i<16;i++){
add(new Button("按钮"+i));
}
//添加组件填满网格
setBounds(200,200,800,800);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new Layout();
}
}
输出结果:
3.GridBagLayout网格组布局
使用方法:
GridBagLayout gridBag = new GridBagLayout();
容器对象.setLayout(gridBag);
GridBagConstraints 约束对象 = new java.awt.GridBagConstraints();//导入awt包
容器对象.add(组件对象,约束对象);
GridBagConstraints常用属性:
常用属性 | 介绍 |
gridx , gridy | 组件所在的位置 |
gridwidth , gridheight | 组件所占的行数和列数 |
anchor | 组件所在的方位 |
fill | 组件的填充方式 |
insets | 组件与单元格边缘的最小距离 |
ipadx,ipady | 组件的首先大小 |
weightx,weighty | 一个单元格的最大宽高 |
示例:
import java.awt.*;
import javax.swing.*;
//导入相关swing组件
public class Layout extends JFrame{
//继承JFrame窗体类
JFrame f = new JFrame();//主窗体
Container c;//主容器
void createFrame(){
//该方法用于创建窗体
c = f.getContentPane();
//方法中容器对象获得了f窗体的容器
c.setLayout(new GridBagLayout());
//设置网格组布局
f.setSize(800,600);
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
f.setVisible(true);
}
void init(){
//设置网格组组件按钮1
GridBagConstraints g1 = new GridBagConstraints();
g1.gridx=1;
g1.gridy=1;
c.add(new JButton("按钮1"),g1);
//设置网格组组件按钮2
GridBagConstraints g2 = new GridBagConstraints();
g2.gridx=2;
g2.gridy=2;
c.add(new JButton("按钮2"),g2);
//设置网格组组件按钮3
GridBagConstraints g3 = new GridBagConstraints();
g1.gridx=3;
g1.gridy=3;
c.add(new JButton("按钮3"),g3);
}
public static void main(String[] args) {
Layout a = new Layout();
a.createFrame();
a.init();
a.f.setVisible(true);
}
}
输出结果:
网格组布局可以对于相关的组件可以起到约束作用
总结
以上就是的边界布局,网格布局,网格组布局三种swing布局方式的介绍,欢迎在评论区中留言,对于不足的地方以及困惑的地方。