一、简单引导

  • layout(布局)
  • 重点代码(绝对布局):
    c.setLayout(null);// 为null时表示将容设为绝对布局为绝对布局;
  • 一个窗体原本是空白的,当我们在里面添加一些组件(如:按钮、标签)后,窗体便不再单调。而这些组件在窗体中的摆放方式,便会联系到后面的布局学习。
  • 绝对布局,当我们编辑好组件在窗体容器中的坐标以及本身大小的相关代码后,这个组件便已经相对于窗体固定住,此时,不管如何改变窗体都不会改变已固定组件的坐标及大小。
  • 补充说明:坐标问题,以电脑桌面左上角为原点,再以窗体左上角相对于原点确定位置。后面关于容器中的组件位置坐标也类似,以左上角为准。以数学方式理解说,我们使用的是第四象限。

二、流程图

  • 组件:比如按钮,标签等,后面源码则用按钮来做例子。
创建一个窗体
窗体里添加容器
组件
尺寸
坐标
是否可见
坐标
尺寸

三、步骤详情

(一)创建一个窗体

1.源码A

源码A是创建一个普通的窗体,设置窗体坐标、大小、是否可见。

源码A如下:

/**内容:
   绝对布局
   容器里的组件不会随着对窗体的的变化而改变,组件的坐标和大小已经由代码固定,因此
想要改变组件坐标、大小变化,需要改变组件对应的代码参数。
*/

import java.awt.Container;// 容器

import javax.swing.*;// 窗体

class Demo extends JFrame{
	public Demo(){
		setBounds(200,150,500,400);// 设置窗体,坐标,宽高;bounds(边界)
		//Default(默认值),Operation(操作)
		setDefaultCloseOperation(EXIT_ON_CLOSE);// 窗体点击×便停止运行;md

		setVisible(true);// 是否可见
	}
	public static void main(String[] args){
		new Demo();
	}
}
2.源码A的运行效果

在这里插入图片描述

(二)在窗体里添加容器

源码B
  • 源码B是在源码A的基础上添加。

  • 源码B为添加容器,源码里只是添加了一句关键代码。事实上,各组件是放于容器中,组件的布局也就是组件在容器中的布局。而容器又是添加到窗体之中。如此关系。

  • 源码B的运行效果和源码A一样。

源码B如下

/**内容:
   绝对布局
   容器里的组件不会随着对窗体的的变化而改变,组件的坐标和大小已经由代码固定,因此
想要改变组件坐标、大小变化,需要改变组件对应的代码参数。
*/

import java.awt.Container;// 容器

import javax.swing.*;// 窗体

class Demo extends JFrame{
	public Demo(){
		setBounds(200,150,500,400);// 设置窗体,坐标,宽高;bounds(边界)
		//Default(默认值),Operation(操作)
		setDefaultCloseOperation(EXIT_ON_CLOSE);// 窗体点击×便停止运行;
		// Container(容器),Content(目录),Pane(边界)
		Container c=getContentPane();// 添加容器c

		setVisible(true);// 是否可见
	}
	public static void main(String[] args){
		new Demo();
	}
}

(三)添加组件

1.源码C
  • 源码C是在源码B的基础上添加。
  • 源码C则是在容器里添加组件(按钮)且设定组件位置大小。

源码C如下:

/**内容:
   绝对布局
   容器里的组件不会随着对窗体的的变化而改变,组件的坐标和大小已经由代码固定,因此
想要改变组件坐标、大小变化,需要改变组件对应的代码参数。
*/

import java.awt.Container;// 容器

import javax.swing.*;// 窗体

class Demo extends JFrame{
	public Demo(){
		setBounds(200,150,500,400);// 设置窗体,坐标,宽高;bounds(边界)
		//Default(默认值),Operation(操作)
		setDefaultCloseOperation(EXIT_ON_CLOSE);// 窗体点击×便停止运行;
		// Container(容器),Content(目录),Pane(边界)
		Container c=getContentPane();// 添加容器c

		c.setLayout(null);// 为null时表示将容设为绝对布局为绝对布局;layout(布局)
		// 创建两个按钮,分别命名为“按钮1”,“按钮2”
		JButton b_1=new JButton("按钮1"), b_2=new JButton("按钮2");
		b_1.setBounds(40,30,70,30);// 设置按钮1在容器中的坐标、宽高
		b_2.setBounds(50,70,80,40);
		c.add(b_1);// 将 按钮1 放于容器c中
		c.add(b_2);

		setVisible(true);// 是否可见
	}
	public static void main(String[] args){
		new Demo();
	}
}
2.源码C的运行效果

在这里插入图片描述

四、定位日期

2020.10.29;20:57

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐