java基础-布局

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();
	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值