上一篇文章介绍了JFrame、JPanel。 其中已经包含使用空布局。 虽然Java可以按像素精确排列组件,但不同的系统显示不同,显示效果也不同。 因此,Java提供了布局管理器,以确保所创建的图形界面与平台无关。
注:所有布局管理器都用于包括顶层容器和中间容器的容器。
一.布局经理所属类包
所属类包
布局管理器名称
说明
Java.awt
流布局)。
组件将根据添加的优先级从左到右按照设置的位置排列,直到一行已满,然后再排列到下一行
BorderLayout
容器分为东、西、南、北、中5个区域,每个区域只能配置一个组件。
网格布局)。
的空间被分割为MN列网格区域,每个区域只能配置一个组件。
卡片布局)。
就像一叠卡片一样,每个卡片都对应一个组件,但一次只能显示一张卡片。 适用于在一个空间中防止多个组件
网格布局)。
在GridLayout的升级版中,组件仍然按行和列排列,但每个组件可以占用多个网格
Java.swing
盒布局(箱式布局)
可以在容器中防止纵向或横向多个控件
弹簧布局)。
根据一系列约束放置控件
无
空布局
不使用布局管理器,根据控件本身提供的大小、位置信息放置控件
二.集装箱默认布局经理
每个容器都有默认的布局管理。 请参照下表。
容器
默认布局方法
顶层容器
JFrame
BorderLayout
JDialog
BorderLayout
j小程序
流布局)。
中间罐
贾内尔
流布局)。
三.流程布局。
使用FlowLayout布局的容器中的组件根据添加的优先级,根据设置的对齐方式(居中、左对齐、右对齐)从左到右排列(在一行填满后),即组件宽度
1、流程布局特点如下。
l构件将根据设置的对齐方式排列
无论对齐方式如何,组件都是从左到右排列的,一行填满,然后移动到下一行。 例如,如果右对齐,则第一个组件位于第一行的最右边,如果添加第二个组件,第一个组件将向左移动,第二个组件将成为该行的最右边的组件。 这就是从左到右排列的意思)
2、流布局FlowLayout类的常用构造函数和方法
构造函数
名字
用途
FlowLayout ()
创建新的流布局。 这是缺省居中对齐,缺省水平和垂直间隙为5像素
浮动(int align ) )。
使用指定的对齐方法创建新的FlowLayout。 缺省水平和垂直间隙为5像素
五个参数值和含义如下。
或FlowLayout.lEFT,控件左对齐
1或FlowLayout.CENTER,居中
2或FlowLayout.RIGHT,右对齐
3或FlowLayout.LEADING,控件对应于容器方向的起始边
4或FlowLayout.TRAILING,控件对应于容器方向的结束边
对于0、1、2、3、4以外的整数,左对齐
flowlayout(intalign,inthgap,intvgap ) )。
创建具有指定对齐方式和指定水平和垂直间隙的新流布局管理器。
方法
名字
用途
虚拟照明(int align ) )。
设定此布局的对齐方式。
虚拟间隙(inth gap )。
设置组件之间以及组件和容器边缘之间的水平间隙。
voidsetvgap(intvgap ) )。
设置组件之间以及组件和容器边缘之间的垂直间隙。
3、浮动布局应用代码段示例
1 )设置浮动布局
JFrame fr=new JFrame (;
FlowLayout flow=new FlowLayout (;
fr.setlayout(flow );
上面的句子可以简化为:
fr.setlayout(newflowlayout )。
);2) 设置框架fr为组件左对齐的FlowLayout布局
fr.setLayout(newFlowLayout(FlowLayout.LEFT));
3) 设置框架fr为组件左对齐的FlowLayout布局,并且组件的水平间距为20像素,垂直间距为40像素。
fr.setLayout(new FlowLayout(FlowLayout.LEFT,20,40));
实例:对齐方式
// FlowLayoutDemo.java
importjavax.swing.*;
importjava.awt.*;
public classFlowLayoutDemo extends JFrame {
public FlowLayoutDemo() {
//设置窗体为流式布局,无参数默认为居中对齐
setLayout(new FlowLayout());
//设置窗体中显示的字体样式
setFont(new Font("Helvetica",Font.PLAIN, 14));
//将按钮添加到窗体中
getContentPane().add(newJButton("Button 1"));
getContentPane().add(new JButton("Button 2"));
getContentPane().add(new JButton("Button3"));
getContentPane().add(newJButton("Button 4"));
}
public static void main(String args[]) {
FlowLayoutDemo window = newFlowLayoutDemo();
window.setTitle("流式布局");
//该代码依据放置的组件设定窗口的大小使之正好能容纳你放置的所有组件
window.pack();
window.setVisible(true);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setLocationRelativeTo(null); //让窗体居中显示
}
}
程序执行结果如下图所示,生成了一个居中显示的窗体,上面有四个按钮,留意按钮之间,按钮与窗体的上下左右边缘都是默认5个像素的间距。改变窗体大小,如下图所示,分别是原始界面、拉宽原始界面、拉窄原始界面,组件和界面的间距。
修改程序代码体会界面布局效果:
setLayout(newFlowLayout());
将上面源程序中的代码更改如下,然后做出如下更改:
setLayout(newFlowLayout(0)); //组件左对齐
setLayout(newFlowLayout(FlowLayout.RIGHT,10,15)); //组件右对齐,组件间水平间距为10像素,垂直间距为15像素