package com.great.demo1;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.LayoutManager;
public class Demo {
/*
* 布局:按照一定的规律,和摆放方式,来布置控件(组件)之间的位置,所形成的样式叫布局
* Layout:布局
* Manager:管理者
*
* 注意:
* 1.所有的UI组件,顶级容器,中间容器,低级容器都有自己的布局管理器
* 2.得到布局管理器,就能改变布局,就能改变界面的排版样式
* 3.布局的权利大于设置尺寸,也就是布局管理器管理着控件的位置,尺寸
* 4.如果不需要布局管理器,可以setLayout(null);将布局管理器设置成null
*
* 常用的布局管理器的布局的分类:
* (注意:以下的容器布局方式都可以修改)
* 1.绝对布局:直接设置内部组件的尺寸和位置,当屏幕扩大时组件的位置大小不随着屏幕的大小而改变,导致界面效果差(不推荐使用)
* 2.方位布局:
* 特点:
* 1.JFrame和JDialog的布局管理器就是方位布局
* 2.方位布局:BorderLayout
* 3.内部的组件大小会随着窗体大小进行改变
* 4.内部的组件会占满当前空间
* 5.当前这个布局有上下左右中(东南西北中)方位的概念,
* 通过 add(组件对象,BorderLayout.East/North/South/West/Center);
* 中间可默认不用书写
* 6.在北方和南方部分的组件,宽度上是占满的
* 7.如果两个组件放置在同一个位置,之前的组件会被覆盖掉
* 8.当横向拖动时,西边和东边的组件的宽度不会随着窗体的大小改变而改变
* 9.当上下拖动时,北边和南边的组件的高度不会随着窗体的大小改变而改变
* 10.当上下拖动时,最先消失的是中间部分,接下来消失的是北边部分
* 11.当左右拖动时,最先消失的是中间部分,接下来消失的是西边部分
* 12.LayoutManager lm = new BorderLayout(100, 20);
* 代表的是:该布局横向上的间隔是100像素,纵向上的间隔是20像素
*
* 3.流式布局:
* 1.JPanel的布局管理器就是流式布局
* 2.流式布局:FlowLayout
* 3.该布局默认横向居中
* 4.该布局从左向右,从上向下排列
* 5.当拖动界面时,内部组件的位置变了,组件的大小不会发生改变
* 6.可以设置该布局的对齐方式
* 7.LayoutManager lm = new FlowLayout(FlowLayout.LEFT, 100, 20);
* 代表的是:该布局是左对齐,横向上的间隔是100像素,纵向上的间隔是20像素
*
*
* 4.网格布局:
* 1.初始化网格布局管理器对象时,需要设置行数,和列数
* 2.内部的组件占满每一格位置
* 3.当拖动界面时,内部组件的大小会改变,相对的位置不变
* 4.如果组件数超过了设置的网格数目,那么就会自动增加网格数目
* 5.如果组件数低于设置的网格数目,那么就会自动减少网格数目
*
* 5.卡片布局:
* 1.该布局只能占据一个组件
* 2.当界面改变大小时,内部的组件会随着界面的大小发生改变
*
*
*/
}
package com.great.demo1;
import java.awt.BorderLayout;
import java.awt.LayoutManager;
import javax.swing.JButton;
import javax.swing.JFrame;
public class JFrameDemo extends JFrame {
public JFrameDemo(){
//设置布局管理器,将系统默认的布局改掉
this.setLayout(null); //如果调用此方法,就能取消布局管理器的控制,可以设置内部组件的位置和大小
//LayoutManager lm = new BorderLayout();
JButton btn = new JButton("click");
btn.setSize(100, 100); //由于布局管理器的原因,导致了按钮无法设置尺寸 --- JFrame的布局管理器,控制了btn的尺寸
this.add(btn);
this.setTitle("hehe");
//this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.setSize(100,100);
this.setLocationRelativeTo(null);
}
public static void main(String[] args) {
new JFrameDemo();
}
}