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布局_练习
xxxxxxxxxxpackage 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);
}}