📄 33.txt
字号:
布局管理器
为了使我们生成的图形用户界面具有良好的平台无关性,Java语言中,提供了布局管理器这个工具来管理组件在容器中的布局,而不使用直接设置组件位置和大小的方式。
每个容器都有一个布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器。
//
容器布局 (Container Layouts)
FlowLayout
BorderLayout
GridLayout
CardLayout
GridBagLayout
//
FlowLayout布局管理器
FlowLayout是Panel类的默认布局管理器
FlowLayout布局对组件逐行定位,行内从左到右,一行排满后换行
默认对齐方式为居中对齐
不改变组件的大小,按组件原有尺寸显示组件 可在构造方法中设置不同的组件间距、行距及对齐方式
FlowLayout 的构造方法
new FlowLayout(FlowLayout.RIGHT,20,40);
右对齐,组件之间水平间距20个像素,竖直间距40个像素;
new FlowLayout(FlowLayout.LEFT);
左对齐,水平和竖直间距为缺省值:5;
new FlowLayout();
使用缺省的居中对齐方式,水平和竖直间距为缺省值:5;
//
BorderLayout 布局管理器
BorderLayout是Frame类的默认布局管理器
BorderLayout将整个容器的布局划分成东、西、南、北、中五个区域,组件只能被添加到指定的区域
如不指定组件的加入部位,则默认加入到Center区域
每个区域只能加入一个组件,如加入多个,则先前加入的组件会被遗弃
BorderLayout型布局容器尺寸缩放原则
北、南两个区域只能在水平方向缩放(宽度可调整)
东、西两个区域只能在垂直方向缩放(高度可调整)
中部可在两个方向上缩放
//
GridLayout 布局管理器
GridLayout型布局管理器将布局划分成规则的矩形网格,每个单元格区域大小相等.
组件被添加到每个单元格中,先从左到右添满一行后换行,再从上到下.
在GridLayout构造方法中指定分割的行数和列数.
new GridLayout(3,4);
CardLayout布局管理器能够帮助用户处理两个以至更多的成员共享同一显示空间,就好象一叠卡片摞在一起。
注意:在一张卡片中只能显示一个组件,因此可以使用容器嵌套方法显示多个组件。
//
* GridBagLayout 布局管理器
AWT中最灵活、最复杂的布局管理器
//
import java.awt.*;
public class LayoutTest
{
public static void main(String args[])
{
//GridLayout
Frame f = new Frame("GridLayout Example");
Button b1 = new Button("b1");
Button b2 = new Button("b2");
Button b3 = new Button("b3");
b3.setBackground(Color.CYAN);
Button b4 = new Button("b4");
Button b5 = new Button("b5");
Button b6 = new Button("b6");
Button b7 = new Button("b7");
Button b8 = new Button("b8");
Button b9 = new Button("b9");
Button b10 = new Button("b10");
f.setLayout (new BorderLayout(3,2));
f.setLocation(200,200);
f.add(b1,"North");
f.add(b2,"South");
f.add(b3,"West");
f.add(b4,"East");
f.add(b5);
Panel pan1 = new Panel();
// pan1.setLayout);
pan1.setSize(20,20);
pan1.setBackground(Color.red);
pan1.add(b9);
pan1.add(b10);
Panel pan = new Panel();
pan.setLayout(new GridLayout(3,2));
pan.setBackground(Color.green);
pan.add(b6);
pan.add(b7); pan.add(pan1);
pan.add(b8);
f.add(pan);
f.pack();
f.setVisible(true);
}
/*
//Flow Layout
Frame f = new Frame("Flow Layout");
Button button1 = new Button("Ok");
Button button2 = new Button("Open");
Button button3 = new Button("Close");
f.setLayout(new FlowLayout(0,30,30));
f.add(button1);
f.add(button2);
f.add(button3);
f.setSize(200,100);
f.setLocation(200,200);
f.setVisible(true);
}
//Border Layout
Frame f;
f = new Frame("Border Layout");
Button bn = new Button("BN");
Button bs = new Button("BS");
Button bw = new Button("BW");
Button be = new Button("BE");
Button bc = new Button("BC");
f.add(bn);
f.add(bs);
f.add(bw);
f.add(be);
f.add(bc);
f.setSize(200,200);
f.setLocation(200,200);
f.setVisible(true);
}
*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -