Java中的布局管理器总结

前几天学到java中的GUI部分,今天就对几种布局管理器做一下总结。

首先就是记住Panel默认的布局管理器是FlowLayout  而Frame默认的布局管理器是BorderLayout  但是都可以通过setlayout()方法来修改

一共有五种布局管理器 分别是

1.BorderLayout边界布局管理器

2.FlowLayout流式布局管理器

3.GridLayout网格布局管理器

4.CardLayout卡片布局管理器

5.GridBagLayout网格包布局管理器

我学的太少了,这里第五种网格包布局管理器还不会用,以后学精细了在来补充吧。今天就对前四种布局管理器做一下总结

首先是BorderLayout布局,Frame默认的布局管理器是BorderLayout 。这就是一个麻将桌一样,上北下南左西右东还有中间。 如果只放一个空间,默认放在中间。用这种布局的窗体,最多就能放五个控件。具体实现如下

package com.awt;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
/*BorderLayout默认有五个位置 每个位置只能放一个组件
 * 
 * */
public class BorderLayoutDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// TODO Auto-generated method stub
		MyFrame4 frame4=new MyFrame4("BorderLayout");
		frame4.init();
	}

}
class MyFrame4 extends Frame{
	public MyFrame4(String title){
		super(title);
	}
	public void init(){
		
		this.setBackground(Color.CYAN);
		this.add(new Button("第一个按钮"));//如果就添加一个组件,默认放在中间
		this.add(new Button("第二个按钮"),BorderLayout.WEST);
		this.add(new Button("第三个按钮"),BorderLayout.NORTH);
		this.add(new Button("第四个按钮"),BorderLayout.CENTER);
		this.add(new Button("第五个按钮"),BorderLayout.EAST);
		this.setSize(300, 200);//设置窗体的大小
		this.setVisible(true);//设置窗体可见
	}
}

程序效果就是这样的



然后是FlowLayout流式布局管理器。Panel默认的布局管理器是FlowLayout 布局管理器。这种布局默认从上到下,从左往右放置。如图实现如下

package com.awt;

import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;

public class FlowLayoutDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyFrame3 frame3=new MyFrame3("Flowlayout");
		frame3.init();
	}

}
class MyFrame3 extends Frame{
	public MyFrame3(String title){
		super(title);
	}
	public void init(){
		//默认的边界布局 BorderLayout   现在设置成流式布局,new一个流式布局的对象,传入setlayout方法中中
		FlowLayout layout=new FlowLayout(FlowLayout.LEFT,50,50);//构造方法参数若为空,默认从中间开始排列,现在设置成左对齐。
		//几个参数是静态的,所以可以类名点属性名  后面两个参数分别是垂直和水平间隙
		this.setLayout(layout);
		this.setBackground(Color.CYAN);
		this.add(new Button("btn1"));
		this.add(new Button("btn2"));
		this.add(new Button("btn3"));
		this.add(new Button("btn4"));
		this.add(new Button("btn5"));
		this.add(new Button("btn6"));;
		this.setSize(300, 200);
		this.setVisible(true);
	}
}
程序效果就是这样的




GridLayout网格布局管理器。这个要设置几行几列的,还是比较好用的。具体实现如下

package com.awt;

import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.GridLayout;

public class GridLayoutDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyFrame5 frame5=new MyFrame5("Flowlayout");
		frame5.init();
	}

}
class MyFrame5 extends Frame{
	public MyFrame5(String title){
		super(title);
	}
	public void init(){
		//默认的边界布局 BorderLayout   现在设置成网格布局,new一个网格布局的对象,传入setlayout方法中
		GridLayout layout=new GridLayout(3,2);//构造方法参数若为空,默认每个组件占据一行一列
		//两个参数的时候,表示几行几列
		//四个参数的时候,前面表示几行几列,后面两个表示垂直和水平的间隙
		this.setLayout(layout);
		this.setBackground(Color.CYAN);
		this.add(new Button("btn1"));
		this.add(new Button("btn2"));
		this.add(new Button("btn3"));
		this.add(new Button("btn4"));
		this.add(new Button("btn5"));
		this.add(new Button("btn6"));
		this.setSize(300, 200);
		this.setVisible(true);
	}
}
程序效果就是这样的



最后一个CardLayout卡片布局管理器是稍微难一点的,就是添加在上面的东西都像卡片一样重叠起来的。默认只能看到最上面一个。下面的程序要用到按钮的监听器,点击下一张,才会看到下一个东西。

package com.awt;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextField;

public class CardLayoutDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyFrame6 frame6=new MyFrame6("Cardlayout");
		frame6.init();
	}

}
class MyFrame6 extends Frame{
	private Panel card_panel=null;
	private Panel ctrol_panel=null;
	private CardLayout cardLayout=null;
	private FlowLayout flowLayout=null;
	private Button btn_first,btn_previous,btn_last,btn_next;
	private Label lb_1,lb_2,lb_3,lb_4;
	private TextField tf_content;
	public MyFrame6(String title){
		super(title);
	}
	public void init(){
		//创建两个面板容器
		card_panel=new Panel();
		ctrol_panel=new Panel();
		//创建两个布局管理器
		flowLayout=new FlowLayout();
		cardLayout=new CardLayout();
		//给容器设置布局管理器
		card_panel.setLayout(cardLayout);
		ctrol_panel.setLayout(flowLayout);
		//声明和创建四个标签和一个文本框空间
		lb_1=new Label("第一页内容",Label.CENTER);//标签中的文字居中
		lb_2=new Label("第二页内容",Label.CENTER);
		tf_content=new TextField();//编辑文本框
		lb_3=new Label("第四页内容",Label.CENTER);
		lb_4=new Label("第五页内容",Label.CENTER);
		//创建四个按钮对象
		btn_first=new Button("第一张");
		btn_previous=new Button("上一张");
		btn_next=new Button("下一张");
		btn_last=new Button("最后一张");
		//把四个标签和一个文本框空间添加到card_panel中
		card_panel.add(lb_1);
		card_panel.add(lb_2);
		card_panel.add(tf_content);
		card_panel.add(lb_3);
		card_panel.add(lb_4);
		//把按钮添加到ctorl_panel中
		ctrol_panel.add(btn_first);
		ctrol_panel.add(btn_previous);
		ctrol_panel.add(btn_next);
		ctrol_panel.add(btn_last);
		this.add(card_panel,BorderLayout.CENTER);
		this.add(ctrol_panel,BorderLayout.SOUTH);
		this.setSize(400, 300);
		this.setVisible(true);
	}
}
程序效果就是这样的




  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值