“Java界面布局”的版本间的差异
(创建页面,内容为“在实际编程中,我们每设计一个窗体,都要往其中添加若干组件。为了管理好这些组件的布局,即大小、位置和排列方式,我…”) |
|||
第1行: | 第1行: | ||
在实际编程中,我们每设计一个窗体,都要往其中添加若干组件。为了管理好这些组件的布局,即大小、位置和排列方式,我们就需要使用布局管理器。将加入到容器的组件按照一定的顺序和规则放置,使之看起来更美观,这就是布局。在Java中,布局由布局管理器 (LayoutManager) 来管理。Java提供了一组用来进行布局管理的类,常见的布局管理器包括 FlowLayout、CardLayout、GridLayout、BorderLayout、BoxLayout 、GridBagLayout 等。 | 在实际编程中,我们每设计一个窗体,都要往其中添加若干组件。为了管理好这些组件的布局,即大小、位置和排列方式,我们就需要使用布局管理器。将加入到容器的组件按照一定的顺序和规则放置,使之看起来更美观,这就是布局。在Java中,布局由布局管理器 (LayoutManager) 来管理。Java提供了一组用来进行布局管理的类,常见的布局管理器包括 FlowLayout、CardLayout、GridLayout、BorderLayout、BoxLayout 、GridBagLayout 等。 | ||
− | + | ||
+ | ==流布局(FlowLayout)== | ||
类FlowLayout是流布局管理器。这种管理器的特点是,组件在容器内依照指定方向按照组件添加的顺序依次加入到容器中。这个指定方向取决于FlowLayout管理器的组件方向属性。该属性有两种可能:从左到右方向和从右向左方向。在默认情况下,这个指定方向是从左到右的。 | 类FlowLayout是流布局管理器。这种管理器的特点是,组件在容器内依照指定方向按照组件添加的顺序依次加入到容器中。这个指定方向取决于FlowLayout管理器的组件方向属性。该属性有两种可能:从左到右方向和从右向左方向。在默认情况下,这个指定方向是从左到右的。 | ||
− | + | ===创建流布局=== | |
下面是流布局BorderLayout所定义的构造函数: | 下面是流布局BorderLayout所定义的构造函数: | ||
− | + | *FlowLayout():创建一个流布局管理器,居中对齐,默认的水平和垂直间隙是 5 个单位。 | |
− | + | *FlowLayout(int align):创建一个指定对齐方式的流布局管理器,align指代对齐方式,具体的对齐方式有居中对齐、左向对齐、右向对齐、容器开始的方向对齐(LEADING)以及容器结束的方向对齐(TRAILING)。默认的水平和垂直间隙是 5 个单位。 | |
− | + | *FlowLayout(int align, int hgap, int vgap):创建一个流布局管理器,align指代对齐方式,hgap指代水平间隙,vgap指代竖直间隙。 | |
− | + | ===FlowLayout的常用方法=== | |
FlowLayout的常用方法见表4-3。 | FlowLayout的常用方法见表4-3。 | ||
− | + | ||
− | 方 法 功 能 | + | <nowiki>方 法 功 能 |
int getAlignment() 获取对齐方式 | int getAlignment() 获取对齐方式 | ||
void setAlignment(int) 设置对齐方式 | void setAlignment(int) 设置对齐方式 | ||
void setHgap(int) 设置组件水平间隔 | void setHgap(int) 设置组件水平间隔 | ||
− | void setVgap() 设置组件垂直间隔 | + | void setVgap() 设置组件垂直间隔</nowiki> |
+ | |||
例如,下面程序演示了FlowLayout布局 | 例如,下面程序演示了FlowLayout布局 | ||
− | public class TestFlowrLayout extends JFrame{ | + | |
+ | <nowiki>public class TestFlowrLayout extends JFrame{ | ||
public TestFlowrLayout() { | public TestFlowrLayout() { | ||
super("FLowLayout布局演示"); | super("FLowLayout布局演示"); | ||
− | + | JPanel panel=new JPanel(); | |
− | + | for(int i=0;i<6;i++) { | |
− | + | panel.add(new JButton("按钮"+i)); | |
− | + | } | |
this.getContentPane().add(panel); | this.getContentPane().add(panel); | ||
− | + | setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); | |
+ | setSize(350,100); | ||
setVisible(true); } | setVisible(true); } | ||
public static void main(String[] args) { | public static void main(String[] args) { | ||
TestFlowrLayout userInfo=new TestFlowrLayout(); | TestFlowrLayout userInfo=new TestFlowrLayout(); | ||
} | } | ||
− | } | + | }</nowiki> |
程序运行结果如下图所示: | 程序运行结果如下图所示: | ||
− | + | ==边界布局(BorderLayout)== | |
边界布局BorderLayout是窗口、框架和对话框等的缺省布局。组件可被置于容器的北(上)、南(下)、东(右)、西(左)或中间位置。它可以对容器组件进行安排,并调整其大小,使其符合上述五个区域,每个区域最多只能包含一个组件,并通过相应的常量进行标识:NORTH、SOUTH、EAST、WEST 和 CENTER。当使用边界布局将一个组件添加到容器中时,要使用这五个常量之一。NORTH 和 SOUTH 组件可以在水平方向上进行拉伸;而 EAST 和 WEST 组件可以在垂直方向上进行拉伸;CENTER 组件在水平和垂直方向上都可以进行拉伸,从而填充所有剩余空间。 | 边界布局BorderLayout是窗口、框架和对话框等的缺省布局。组件可被置于容器的北(上)、南(下)、东(右)、西(左)或中间位置。它可以对容器组件进行安排,并调整其大小,使其符合上述五个区域,每个区域最多只能包含一个组件,并通过相应的常量进行标识:NORTH、SOUTH、EAST、WEST 和 CENTER。当使用边界布局将一个组件添加到容器中时,要使用这五个常量之一。NORTH 和 SOUTH 组件可以在水平方向上进行拉伸;而 EAST 和 WEST 组件可以在垂直方向上进行拉伸;CENTER 组件在水平和垂直方向上都可以进行拉伸,从而填充所有剩余空间。 | ||
− | + | ===创建边界布局=== | |
下面是BorderLayout所定义的构造函数: | 下面是BorderLayout所定义的构造函数: | ||
− | + | *BorderLayout( ):生成默认的边界布局 | |
− | + | *BorderLayout(int horz,int vert): 可以设定组件间的水平和垂直距离 | |
+ | |||
BorderLayout 类定义了几个常量值以指定相应区域: | BorderLayout 类定义了几个常量值以指定相应区域: | ||
− | + | *BorderLayout.NORTH – 对应容器的顶部 | |
− | + | *BorderLayout.EAST – 对应容器的右部 | |
− | + | *BorderLayout.SOUTH – 对应容器的底部 | |
− | + | *BorderLayout.WEST – 对应容器的左部 | |
− | + | *BorderLayout.CENTER – 对应容器的中部 | |
− | + | ===添加组件=== | |
加入组件方法是 void add(Component Obj, int region)。 | 加入组件方法是 void add(Component Obj, int region)。 | ||
+ | |||
下面代码段可实现如图所示的运行效果。 | 下面代码段可实现如图所示的运行效果。 | ||
− | public class TestBorderLayout extends JFrame{ | + | |
+ | <nowiki>public class TestBorderLayout extends JFrame{ | ||
public TestBorderLayout() { | public TestBorderLayout() { | ||
super("边界布局演示"); | super("边界布局演示"); | ||
setLayout(new BorderLayout()); | setLayout(new BorderLayout()); | ||
− | + | JPanel borderPanel=new JPanel();//1.创建一个面板 | |
− | + | JButton btnEast=new JButton("东"); | |
− | + | JButton btnWest=new JButton("西"); | |
− | + | JButton btnNorth=new JButton("北"); | |
− | + | JButton btnSouth=new JButton("南"); | |
− | + | JButton btnCenter=new JButton("中"); | |
− | + | ||
− | + | borderPanel.setLayout(new BorderLayout());//2.设置布局方式 | |
− | + | borderPanel.add(btnEast,BorderLayout.EAST);//3.将组件依次添加到面板中 | |
− | + | borderPanel.add(btnWest,BorderLayout.WEST); | |
− | + | borderPanel.add(btnNorth,BorderLayout.NORTH); | |
− | + | borderPanel.add(btnSouth,BorderLayout.SOUTH); | |
+ | borderPanel.add(btnCenter,BorderLayout.CENTER); | ||
− | this.getContentPane().add(borderPanel); | + | this.getContentPane().add(borderPanel);//4.将面板添加到框架中 |
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置默认关闭时操作 | setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置默认关闭时操作 | ||
setSize(220,200); | setSize(220,200); | ||
第72行: | 第80行: | ||
TestBorderLayout userInfo=new TestBorderLayout(); | TestBorderLayout userInfo=new TestBorderLayout(); | ||
} | } | ||
− | } | + | }</nowiki> |
当窗口缩放时,组件的位置不发生变化,但组件的大小会相应改变。边界布局管理器给予南、北组件最佳高度,使它们与容器一样宽;给予东、西组件最佳宽度,而高度受到限制。如果窗口水平缩放,南、北、中区域变化;如果窗口垂直缩放,东、西、中区域变化。BorderLayout是窗口( JWindow)、框架(JFrame)、对话框(JDialog)等类型对象的默认布局。 | 当窗口缩放时,组件的位置不发生变化,但组件的大小会相应改变。边界布局管理器给予南、北组件最佳高度,使它们与容器一样宽;给予东、西组件最佳宽度,而高度受到限制。如果窗口水平缩放,南、北、中区域变化;如果窗口垂直缩放,东、西、中区域变化。BorderLayout是窗口( JWindow)、框架(JFrame)、对话框(JDialog)等类型对象的默认布局。 | ||
− | + | ||
+ | ==GridLayout== | ||
网格布局是一种常用的布局方式,将容器的区域划分成矩形网格,每个矩形大小规格一致,组件可以放置在其中的一个矩形中。通过java.awt.GridLayout类创建网格布局管理器对象,实现对容器中的各组件的网格布局排列。具体的排列方向取决于容器的组件方向属性,组件方向属性有两种:从左向右和从右向左。用户可以根据实际要求进行设定方向属性,默认的方向是从右向左。 | 网格布局是一种常用的布局方式,将容器的区域划分成矩形网格,每个矩形大小规格一致,组件可以放置在其中的一个矩形中。通过java.awt.GridLayout类创建网格布局管理器对象,实现对容器中的各组件的网格布局排列。具体的排列方向取决于容器的组件方向属性,组件方向属性有两种:从左向右和从右向左。用户可以根据实际要求进行设定方向属性,默认的方向是从右向左。 | ||
− | + | ===创建网格布局=== | |
GridLayout的构造方法如下: | GridLayout的构造方法如下: | ||
− | + | *GridLayout():创建默认的网格布局。每一个组件占据一行一列。 | |
− | + | *GridLayout(int rows,int columns):创建指定行数和列数的网格布局。 | |
− | + | *GridLayout(int rows,int columns, int hgap,int vgap):创建指定行数和列数的网格布局,并且指定水平间隔和垂直间隔的大小。 | |
− | + | ===GridLayout的常见方法=== | |
GridLayout的常见方法见表。 | GridLayout的常见方法见表。 | ||
− | + | <nowiki>方 法 功 能 | |
− | 方 法 功 能 | ||
int getRows() 获取行数 | int getRows() 获取行数 | ||
void setRows(int) 设置行数 | void setRows(int) 设置行数 | ||
第93行: | 第101行: | ||
void setHgap(int) 设置组件水平间隔 | void setHgap(int) 设置组件水平间隔 | ||
int getVgap() 获取组件垂直间隔 | int getVgap() 获取组件垂直间隔 | ||
− | void setVgap() 设置组件垂直间隔 | + | void setVgap() 设置组件垂直间隔</nowiki> |
+ | |||
例如,下面一段代码演示了网格布局: | 例如,下面一段代码演示了网格布局: | ||
− | public class TestGridLayout extends JFrame{ | + | <nowiki>public class TestGridLayout extends JFrame{ |
public TestGridLayout() { | public TestGridLayout() { | ||
super("GridLayout布局演示"); | super("GridLayout布局演示"); | ||
第111行: | 第120行: | ||
TestGridLayout grid=new TestGridLayout(); | TestGridLayout grid=new TestGridLayout(); | ||
} | } | ||
− | } | + | }</nowiki> |
程序运行结果如下图所示: | 程序运行结果如下图所示: | ||
图 网格布局 | 图 网格布局 |
2018年5月21日 (一) 14:03的版本
在实际编程中,我们每设计一个窗体,都要往其中添加若干组件。为了管理好这些组件的布局,即大小、位置和排列方式,我们就需要使用布局管理器。将加入到容器的组件按照一定的顺序和规则放置,使之看起来更美观,这就是布局。在Java中,布局由布局管理器 (LayoutManager) 来管理。Java提供了一组用来进行布局管理的类,常见的布局管理器包括 FlowLayout、CardLayout、GridLayout、BorderLayout、BoxLayout 、GridBagLayout 等。
目录
流布局(FlowLayout)
类FlowLayout是流布局管理器。这种管理器的特点是,组件在容器内依照指定方向按照组件添加的顺序依次加入到容器中。这个指定方向取决于FlowLayout管理器的组件方向属性。该属性有两种可能:从左到右方向和从右向左方向。在默认情况下,这个指定方向是从左到右的。
创建流布局
下面是流布局BorderLayout所定义的构造函数:
- FlowLayout():创建一个流布局管理器,居中对齐,默认的水平和垂直间隙是 5 个单位。
- FlowLayout(int align):创建一个指定对齐方式的流布局管理器,align指代对齐方式,具体的对齐方式有居中对齐、左向对齐、右向对齐、容器开始的方向对齐(LEADING)以及容器结束的方向对齐(TRAILING)。默认的水平和垂直间隙是 5 个单位。
- FlowLayout(int align, int hgap, int vgap):创建一个流布局管理器,align指代对齐方式,hgap指代水平间隙,vgap指代竖直间隙。
FlowLayout的常用方法
FlowLayout的常用方法见表4-3。
方 法 功 能 int getAlignment() 获取对齐方式 void setAlignment(int) 设置对齐方式 void setHgap(int) 设置组件水平间隔 void setVgap() 设置组件垂直间隔
例如,下面程序演示了FlowLayout布局
public class TestFlowrLayout extends JFrame{ public TestFlowrLayout() { super("FLowLayout布局演示"); JPanel panel=new JPanel(); for(int i=0;i<6;i++) { panel.add(new JButton("按钮"+i)); } this.getContentPane().add(panel); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(350,100); setVisible(true); } public static void main(String[] args) { TestFlowrLayout userInfo=new TestFlowrLayout(); } }
程序运行结果如下图所示:
边界布局(BorderLayout)
边界布局BorderLayout是窗口、框架和对话框等的缺省布局。组件可被置于容器的北(上)、南(下)、东(右)、西(左)或中间位置。它可以对容器组件进行安排,并调整其大小,使其符合上述五个区域,每个区域最多只能包含一个组件,并通过相应的常量进行标识:NORTH、SOUTH、EAST、WEST 和 CENTER。当使用边界布局将一个组件添加到容器中时,要使用这五个常量之一。NORTH 和 SOUTH 组件可以在水平方向上进行拉伸;而 EAST 和 WEST 组件可以在垂直方向上进行拉伸;CENTER 组件在水平和垂直方向上都可以进行拉伸,从而填充所有剩余空间。
创建边界布局
下面是BorderLayout所定义的构造函数:
- BorderLayout( ):生成默认的边界布局
- BorderLayout(int horz,int vert): 可以设定组件间的水平和垂直距离
BorderLayout 类定义了几个常量值以指定相应区域:
- BorderLayout.NORTH – 对应容器的顶部
- BorderLayout.EAST – 对应容器的右部
- BorderLayout.SOUTH – 对应容器的底部
- BorderLayout.WEST – 对应容器的左部
- BorderLayout.CENTER – 对应容器的中部
添加组件
加入组件方法是 void add(Component Obj, int region)。
下面代码段可实现如图所示的运行效果。
public class TestBorderLayout extends JFrame{ public TestBorderLayout() { super("边界布局演示"); setLayout(new BorderLayout()); JPanel borderPanel=new JPanel();//1.创建一个面板 JButton btnEast=new JButton("东"); JButton btnWest=new JButton("西"); JButton btnNorth=new JButton("北"); JButton btnSouth=new JButton("南"); JButton btnCenter=new JButton("中"); borderPanel.setLayout(new BorderLayout());//2.设置布局方式 borderPanel.add(btnEast,BorderLayout.EAST);//3.将组件依次添加到面板中 borderPanel.add(btnWest,BorderLayout.WEST); borderPanel.add(btnNorth,BorderLayout.NORTH); borderPanel.add(btnSouth,BorderLayout.SOUTH); borderPanel.add(btnCenter,BorderLayout.CENTER); this.getContentPane().add(borderPanel);//4.将面板添加到框架中 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置默认关闭时操作 setSize(220,200); setVisible(true);//设置窗口可见性 } public static void main(String[] args) { TestBorderLayout userInfo=new TestBorderLayout(); } }
当窗口缩放时,组件的位置不发生变化,但组件的大小会相应改变。边界布局管理器给予南、北组件最佳高度,使它们与容器一样宽;给予东、西组件最佳宽度,而高度受到限制。如果窗口水平缩放,南、北、中区域变化;如果窗口垂直缩放,东、西、中区域变化。BorderLayout是窗口( JWindow)、框架(JFrame)、对话框(JDialog)等类型对象的默认布局。
GridLayout
网格布局是一种常用的布局方式,将容器的区域划分成矩形网格,每个矩形大小规格一致,组件可以放置在其中的一个矩形中。通过java.awt.GridLayout类创建网格布局管理器对象,实现对容器中的各组件的网格布局排列。具体的排列方向取决于容器的组件方向属性,组件方向属性有两种:从左向右和从右向左。用户可以根据实际要求进行设定方向属性,默认的方向是从右向左。
创建网格布局
GridLayout的构造方法如下:
- GridLayout():创建默认的网格布局。每一个组件占据一行一列。
- GridLayout(int rows,int columns):创建指定行数和列数的网格布局。
- GridLayout(int rows,int columns, int hgap,int vgap):创建指定行数和列数的网格布局,并且指定水平间隔和垂直间隔的大小。
GridLayout的常见方法
GridLayout的常见方法见表。
方 法 功 能 int getRows() 获取行数 void setRows(int) 设置行数 int getColumns() 获取列数 void setColumns(int) 设置列数 int getHgap() 获取组件水平间隔 void setHgap(int) 设置组件水平间隔 int getVgap() 获取组件垂直间隔 void setVgap() 设置组件垂直间隔
例如,下面一段代码演示了网格布局:
public class TestGridLayout extends JFrame{ public TestGridLayout() { super("GridLayout布局演示"); String[] str={"1","2","3","4","5","6","7","8","9"}; JPanel gridPanel=new JPanel(); gridPanel.setLayout(new GridLayout(3,3));//设置布局方式 for(int i=0;i<str.length;i++) gridPanel.add(new JButton(str[i])); this.getContentPane().add(gridPanel); setSize(300,300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置默认关闭时操作 setVisible(true);//设置窗口可见性 } public static void main(String[] args) { TestGridLayout grid=new TestGridLayout(); } }
程序运行结果如下图所示:
图 网格布局