awt的FlowLayout布局
布局管理器LayoutManager是一个接口 LayoutManager接口下有两个实现类分别是GridLayout、FlowLayout LayoutManager接口下有一个子接口是LayoutManager2 LayoutManager2接口下有三个实现类分别是CardLayout、GridBagLayout、BorderLayout
布局管理器LayoutManager共提供了5个实现类,即java的jdk共提供了5种布局管理器,如下
GridLayout:网格布局管理器 FlowLayout:流式布局管理器 CardLayout:卡片布局管理器 GridBagLayout:网格包布局管理器 BorderLayout:边框布局管理器
FlowLayout管理器:作用是组件像水流一样向某方向流动(排列),遇到障碍(边界)就返回,重头开始排列。在默认情况下,FlowLayout布局管理器从左向右排列所有组件,遇到边界就会折回下一行重新开始
FlowLayout管理器是一个类,它的构造方法如下。注意align意思是对齐方式、hgap是垂直间距、vgap是水平间距
构造方法 | 作用 |
---|---|
FlowLayout() | 使用默认的对齐方式及默认的垂直间距、水平间距创建FlowLayout布局管理器 |
FlowLayout(int align) | 使用指定的对齐方式及默认的垂直间距、水平间距创建FlowLayout布局管理器 |
FlowLayout(int align,int hgap,int vgap) | 使用指定的对齐方式及指定的垂直间距、水平间距创建FlowLayout布局管理器 |
注意FlowLayout中组件的排列方向(例如从左到右、从右到左、从中间向两边等), 该参数应该使用FlowLayout类的静态常量:FlowLayout.LEFT、FlowLayout.CENTER、FlowLayout.RIGHT,默认是左对齐。 其中总结一下就是如下 1、FlowLayout.LEFT左对齐 2、FlowLayout.CENTER中间对齐 3、FlowLayout.RIGHT右对齐
awt的FlowLayout布局_练习
xxxxxxxxxx
package ch29;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class a_3_1awt_FlowLayout布局 {
public static void main(String[] args) {
//创建窗口
Frame frame = new Frame("测试FlowLayout");
//1、上面那行的Frame窗口是一个容器,我们可以指定容器的对齐方式。由于frame是window的子类,而window默认的布局管理器是BorderLayout,
//具体做法:通过setLayout方法设置容器的布局管理器
frame.setLayout(new FlowLayout(FlowLayout.CENTER,40,20));//参数:对齐方式,水平间距,垂直间距
//2、添加100个按钮到frame中。快捷键:100.fori,回车
for (int i = 0; i < 100; i++) {
frame.add(new Button("按钮"+i));//按钮内容
}
//给Frame设置WindowListener监听器,监听用户点击右上角X的动作,则关闭窗口
frame.addWindowListener(new WindowAdapter() {
//采用Java通过的适配器设计模式,我们只需要重写自己需要的方法,例如windowClosing方法,如下
public void windowClosing(WindowEvent e) {
System.exit(0);//原理:退出JVM虚拟机,即退出当前运行的Java程序
}
});
//3、设置最佳大小,pack方法
frame.pack();
//为什么按钮里面的文字出现乱码:idea编码是UTF-8,生成的按钮是由当前win11操作系统创建的,而当前系统的默认编码是中文GBK编码,不一致就会出现乱码
//解决:让编码和解码一致
//具体解决:在idea软件的上方中间靠右一些有一个绿色锤子图标,点击锤子图标右边的输入框,点击下拉的Edit Configurations...,点击弹出来的
//选项卡的Modify options绿色字体,找到Add VM options并勾选,将'-Dfile.encoding=gbk'输入到刚才Modify options蓝色字体的
//下方的三条输入框中的最上面那条输入框里面
//由于我们不是滚动条容器,所以运行之后,要自己去放大弹出来的窗口
//设置窗口为可见
frame.setVisible(true);
}
}