1.FlowLayOut流式布局
import java.awt.*;
//设置一个布局管理器FlowLayOut
public class awtDemo3 {
public static void main(String[] args) {
Frame frame=new Frame();
// 使用默认的对齐方式及默认的垂直间距、水平间距创建FlowLayout布局管理器。
// FlowLayout()
// 使用指定的对齐方式及默认的垂直间距、水平间距创建FlowLayout布局管理器。
// FlowLayout(int align)
// FlowLayout(int align,int hgap,int vgap)
// 使用指定的对齐方式及指定的垂直问距、水平间距创建FlowLayout 布局管理器
frame.setLayout(new FlowLayout(FlowLayout.LEFT,40,20));//设置的是左对齐
for(int i=0;i<100;i++){
frame.add(new Button("按钮"+i));
}
//设置最佳位置
frame.pack();
frame.setVisible(true);
}
}
2.BorderLayout边框布局
import java.awt.*;
//设置一个BorderLayout布局管理器
public class awtDemo4 {
public static void main(String[] args) {
Frame frame=new Frame();
frame.setLayout(new BorderLayout());
frame.add(new Button("北侧按钮"),BorderLayout.NORTH);
frame.add(new Button("南侧按钮"),BorderLayout.SOUTH);
frame.add(new Button("西侧按钮"),BorderLayout.WEST);
frame.add(new Button("东侧按钮"),BorderLayout.EAST);
frame.add(new Button("中间按钮"),BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
}
3. GridLayout网格布局
使用网格布局设计一个计算器界面
import java.awt.*;
//使用GridLayout布局管理器设置一个计算器界面
public class awtDemo1 {
public static void main(String[] args) {
Frame f=new Frame("计算器");
//1.创建一个Panel容器
Panel panel1=new Panel();
//2.加入文本框
panel1.add(new TextField(30));//设置能容纳30列
//3.将第一个Panel容器放在window的北部 window窗口是默认使用BorderLayout
f.add(panel1,BorderLayout.NORTH);
//4.创建另一个Panel容器
Panel panel2=new Panel();
panel2.setLayout(new GridLayout(3,5,4,4));//行数,列数,垂直间距,水平间距
for(int i=0;i<10;i++){
panel2.add(new Button(i+""));//将int类型转换为字符串
}
panel2.add(new Button("+"));
panel2.add(new Button("-"));
panel2.add(new Button("*"));
panel2.add(new Button("/"));
panel2.add(new Button("."));
//5.将第二个Panel容器放入windo窗口中 默认居中
f.add(panel2);
f.pack();
f.setVisible(true);
}
}
4.CardLayout卡片布局
方法名称 | 方法功能 |
CardLayout() | 创建默认的CardLayout布局管理器。 |
CardLayout(int hgap,int vgap) | 通过指定卡片与容器左右边界的间距C hgap)、上下边界Cvgap)的间距来创 建CardLayout布局管理器 |
first(Container target) | 显示target容器中的第一张卡片. |
last(Container target) | 显示target容器中的最后一张卡片. |
previous(Container arget) | 显示target容器中的前一张卡片. |
next(Container target) | 显示target容器中的后一张卡片. |
show(Containertaget,String name) | 显示target容器中指定名字的卡片. |
//CardLayout
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class awtDemo2 {
public static void main(String[] args) {
Frame frame=new Frame("这里测试");
//1.创建一个Panel
Panel panel1=new Panel();
//2.设置为CardLayout布局管理
CardLayout cardLayout=new CardLayout();
panel1.setLayout(cardLayout);
//3.往Panel中加入多个组件
String []names={"第一张","第二张","第三张","第四张","第五张",};
for(int i=0;i< names.length;i++){
panel1.add(names[i],new Button(names[i]));
}
//4.将这个Panel放在window中间
frame.add(panel1);
//5.创建另一个Panel用于存放多个按钮
Panel panel2=new Panel();
Button b1 = new Button("上一张");
Button b2 = new Button("下一张");
Button b3 = new Button("第一张");
Button b4 = new Button("最后一张");
Button b5 = new Button("第三张");
//6.创建一个事件监听器用于响应这些按钮
ActionListener actionListener=new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String name=e.getActionCommand();//得到每个按钮上的名字
switch (name){
case "上一张":cardLayout.previous(panel1);
break;
case "下一张":cardLayout.next(panel1);
break;
case "第一张": cardLayout.first(panel1);
break;
case "最后一张":cardLayout.last(panel1);
break;
case "第三张":cardLayout.show(panel1,"第三张");
break;
}
}
};
//7.把这个时间监听器和多个按钮绑定在一起
b1.addActionListener(actionListener);
b2.addActionListener(actionListener);
b3.addActionListener(actionListener);
b4.addActionListener(actionListener);
b5.addActionListener(actionListener);
//8.
panel2.add(b1);
panel2.add(b2);
panel2.add(b3);
panel2.add(b4);
panel2.add(b5);
//
frame.add(panel2,BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
}
}
5.BoxLayOut
import javax.swing.*;
import java.awt.*;
public class awtDemo4 {
public static void main(String[] args) {
Frame frame=new Frame();
//设置水平容器
Box hb = Box.createHorizontalBox();
hb.add(new Button("水平按钮1"));
hb.add(Box.createHorizontalGlue());//设置一个可以拉伸的间距
hb.add(new Button("水平按钮2"));
hb.add(Box.createHorizontalStrut(30));//设置一个不可拉伸的
hb.add(new Button("水平按钮3"));
//设置一个垂直容器
Box vb = Box.createVerticalBox();
vb.add(new Button("垂直按钮1"));
vb.add(Box.createVerticalGlue());//设置一个可以拉伸的间距
vb.add(new Button("垂直按钮2"));
vb.add(Box.createVerticalStrut(30));//不可拉伸的
vb.add(new Button("垂直按钮3"));
frame.add(hb,BorderLayout.NORTH);
frame.add(vb);
frame.pack();
frame.setVisible(true);
}
}