JAVA图形界面中的容器和布局管理

准备用几篇文章把JAVA的图形界面知识点整理出来;
这一片主要说一下JAVA中的容器和布局;
首先放在开头的是,写图形界面编程要加上这两行代码;

import java.awt.*;
import javax.swing.*;

不然可不好使;
在这里插入图片描述
一、顶层容器JFrame

首先在屏幕上显示的所有组件必须包含在某个容器中,而有些容器是可以嵌套的,在这个嵌套层次的最外层,必须是一个顶层容器;Swing中提供了四种;
JFrame:一个带有标题行,控制按钮的独立窗口;
JApplet:创建小程序时使用;
JDialog:创建对话框时使用;
JWindow:不带标题和控制按钮的窗口;

这里主要说一下JFrame的用法;
看例子来说明;

public static void main(String[] args) {
	JFrame frame=new JFrame("Demo");//构造方法显示标题
	JButton button=new JButton("Press me");//构造方法显示按钮标题
	frame.getContentPane().add(button,BorderLayout.CENTER);//添加按钮
	frame.pack();//调整窗口
	frame.setVisible(true);//显示到屏幕上
	

}

那,这里面只要知道前两行的具体意思就行;
通过构造方法设置标题;
看一下运行结果:
在这里插入图片描述
只要知道怎么用JFrame就可以了先;
之后我们再继续;

二、内容窗格

每个顶层容器都有一个内容窗格,实际上,顶层容器除了菜单之外的组件全都放在这个内容窗格上。将组件放入内容窗格有两种方法;
1,

public static void main(String[] args) {
	JFrame frame=new JFrame("Demo");
	JButton button=new JButton("Press me");
	Container contentPane=frame.getContentPane();
	contentPane.add(button,BorderLayout.CENTER);
	frame.pack();
	frame.setVisible(true);
	

}

其中的Container contentPane=frame.getContentPane(); contentPane.add(button,BorderLayout.CENTER);
可以换成上个例子中的frame.getContentPane().add(button,BorderLayout.CENTER);

这回能理解代码中的四五行了吧,就是向内容窗格中添加控件;

2,第二种方法是使用JPanel,下个点就会说;
在这里插入图片描述

三、面板JPanel;

面板是一种用途广泛的容器,但是与顶层容器不同的是,面板不能独立存在,必须添加到其他容器内部,面板可以嵌套,由此可以设计出复杂的图形用户界面;
我们还是通过例子来说明;

public static void main(String[] args) {
	JFrame frame=new JFrame("Frame with panel");
	frame.getContentPane().setBackground(Color.CYAN);//设置背景色
	JPanel panel=new JPanel();
	panel.setBackground(Color.yellow);//创建面板设置背景色
	JButton button=new JButton("Press me");
	panel.add(button,BorderLayout.CENTER);//向面板添加按钮
	frame.add(panel,BorderLayout.SOUTH);//向容器添加面板
	frame.setSize(200, 200);//设置窗口大小
	frame.setVisible(true);//显示

}

面板本身就是一个容器,所以自然可以放组件,面板又不能独立存在所以得放在容器内部;
这就是面板的使用方法;
看一下运行结果:
在这里插入图片描述

四、FlowLayout布局

在默认情况下,FlowLayout将组件居中放置在某一行上。
FlowLayout有三种构造方法要知道;

	public FlowLayout(int,int,int)
	public FlowLayout(int)
	public FlowLayout()

我们用例子来说明,例子中用的是最后无参的构造函数;

public static void main(String[] args) {
	JFrame frame=new JFrame("Frame with panel");
	JButton b1,b2,b3,b4;
	b1=new JButton("b1");
	b2=new JButton("b2");
	b3=new JButton("b3");
	b4=new JButton("b4");
	frame.getContentPane().setLayout(new FlowLayout());//使用FlowLayout布局
	frame.add(b1);
	frame.add(b2);
	frame.add(b3);
	frame.add(b4);
	frame.setSize(200,200);
	frame.setVisible(true);

}

很简单吧,看一下运行结果;
在这里插入图片描述
在这里插入图片描述

五、BorderLayout布局;

它是顶层容器中内容窗格的默认布局管理,它提供了一种较为复杂的布局管理方案,每个由BorderLayout管理的容器被分为东西南北中共5个区域(如果仔细看了之前的例子,会发现有这个布局的),分别用常量BorderLayout.NORTH或“North”等来表示

看一下构造方法:
BorderLayout();
BorderLayout(int,int);

我们还是用例子来说明

public static void main(String[] args) {
	JFrame frame=new JFrame("Frame with panel");
	JButton b1,b2,b3,b4,b5;
	b1=new JButton("b1");
	b2=new JButton("b2");
	b3=new JButton("b3");
	b4=new JButton("b4");
	b5=new JButton("b5");
	frame.getContentPane().setLayout(new BorderLayout());//使用BorderLayout布局
	frame.add(b1,BorderLayout.WEST);
	frame.add(b2,BorderLayout.NORTH);
	frame.add(b3,BorderLayout.EAST);
	frame.add(b4,BorderLayout.SOUTH);
	frame.add(b5,BorderLayout.CENTER);//五个方位添加按钮
	frame.setSize(200,200);
	frame.setVisible(true);

}

也很好理解吧;
看一下运行截图;
在这里插入图片描述
在这里插入图片描述

六、GridLayout布局

GridLayout是一种网格试的布局管理器,他讲容器空间划分成若干行乘若干列的网格,组件依次放入其中,每个组件占据一格;
看一下他的构造方法:
GridLayout();
GridLayout(int,int);
GridLayout(int,int,int,int);

依旧是用例子来说明他的用法;

public static void main(String[] args) {
	JFrame frame=new JFrame("Frame with panel");
	JButton b1,b2,b3,b4,b5,b6;
	b1=new JButton("b1");
	b2=new JButton("b2");
	b3=new JButton("b3");
	b4=new JButton("b4");
	b5=new JButton("b5");
	b6=new JButton("b6");
	frame.getContentPane().setLayout(new GridLayout(2,3));//划分为两行三列的布局
	frame.add(b6);
	frame.add(b5);
	frame.add(b4);
	frame.add(b3);
	frame.add(b2);
	frame.add(b1);
	frame.setSize(200,400);
	frame.setVisible(true);


}

是不是都非常好理解;
在这里插入图片描述

最后看一下运行截图;
在这里插入图片描述

关于容器和布局管理只整理这些了,这三种布局方法比较常用,当然还有一些其他的布局方法就需要自己去查阅资料掌握了!
OK,end
结束
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46726346/article/details/107082062
今日推荐