文章目录
- 前言
- 一、布局介绍
- 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(){//设置网格组组件按钮1GridBagConstraints g1 = new GridBagConstraints();g1.gridx=1;g1.gridy=1;c.add(new JButton("按钮1"),g1);//设置网格组组件按钮2GridBagConstraints g2 = new GridBagConstraints();g2.gridx=2;g2.gridy=2;c.add(new JButton("按钮2"),g2);//设置网格组组件按钮3GridBagConstraints 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布局方式的介绍,欢迎在评论区中留言,对于不足的地方以及困惑的地方。