java:佈局方法(流佈局)

小蝸牛764號發表於2020-11-03

一、簡單說明

流佈局簡單引導。窗體內的元件,比如:按鈕,會按順序從第一行開始由左往右排列,當窗體內的第一行填不下時,便繼續從下一行由左往右排列,以此類推,直到最後元件全部排列完為止。

  • 當窗體內的元件沒填滿一行時,如下:
    在這裡插入圖片描述
    ·
  • 當窗體第一行填不下時,繼續填第二行,以此類推,直到填完為止。如下:

在這裡插入圖片描述

二、流程圖

  • 元件:比如按鈕,標籤等,後面原始碼則用按鈕來做例子。
  • 這裡流佈局的方法,則是對元件(按鈕)進行排列。
  • 此博文記錄偏向於流佈局的相關內容,若需要再多瞭解一些窗體、容器、元件的相關知識,可以參考往常的博文。
建立一個窗體
窗體裡新增容器
元件
流佈局
尺寸
座標
是否可見
居中
靠左
靠右

三、關鍵程式碼

c.setLayout(new FlowLayout(A))

  • A可以為空,即預設情況,也可以新增其他條件。以下詳細說明:

四、流佈局的幾個方法

  • 注意:以下的原始碼A、B、C、D內容相同,只是在指定方法需要時,而註釋掉了幾行程式碼,只使用所用方法的相關程式碼。

(一)A為“空”(無內容)

當程式碼c.setLayout(new FlowLayout(A))中的A為,也就是什麼都沒有時。流佈局的佈局方式為:窗體內的元件從左到右排列,元件的整體則居中。原始碼A,如下:

1.原始碼A

/**內容:
    流佈局
*/

import java.awt.Container;// 容器
import java.awt.FlowLayout;// 流佈局

import javax.swing.*;// 窗體

class Demo extends JFrame{
	public Demo(){
		setBounds(100,80,500,400);// 確定窗體座標、寬高;Bounds(邊界)
		// default(預設值);operation(計算)
		setDefaultCloseOperation(EXIT_ON_CLOSE);// 窗體點選×停止執行
		
		// content(目錄);pane(邊;窗格)
		Container c=getContentPane();// 獲取容器

		// Layout(佈局);Flow(流動)
		// 設定流佈局放於容器中
		c.setLayout(new FlowLayout());// 情況一:預設情況;元件(按鈕)排列順序從左到右,居中
//		c.setLayout(new FlowLayout(FlowLayout.LEFT));// 情況二:元件排列順序從左到右,靠左
//		c.setLayout(new FlowLayout(FlowLayout.RIGHT));// 情況三:元件排列順序從左到右,靠右
//		c.setLayout(new FlowLayout(FlowLayout.LEFT,40,30));// 情況四:元件排列順序從左到右,靠左;兩元件水平間距、上下間距(畫素)

		// 用for迴圈新增10個按鈕
		for(int i_1=1;i_1<11;i_1++){
			c.add(new JButton("按鈕"+i_1));
		}

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

2.原始碼A執行效果

在這裡插入圖片描述

(二)A為“FlowLayout.LEFT”

當程式碼c.setLayout(new FlowLayout(A))中的A為 FlowLayout.LEFT 時,流佈局的佈局方式為:窗體內的元件從左到右排列,元件整體則靠左。原始碼B,如下:

1.原始碼B

/**內容:
    流佈局
*/

import java.awt.Container;// 容器
import java.awt.FlowLayout;// 流佈局

import javax.swing.*;// 窗體

class Demo extends JFrame{
	public Demo(){
		setBounds(100,80,500,400);// 確定窗體座標、寬高;Bounds(邊界)
		// default(預設值);operation(計算)
		setDefaultCloseOperation(EXIT_ON_CLOSE);// 窗體點選×停止執行
		
		// content(目錄);pane(邊;窗格)
		Container c=getContentPane();// 獲取容器

		// Layout(佈局);Flow(流動)
		// 設定流佈局放於容器中
//		c.setLayout(new FlowLayout());// 情況一:預設情況;元件(按鈕)排列順序從左到右,居中
		c.setLayout(new FlowLayout(FlowLayout.LEFT));// 情況二:元件排列順序從左到右,靠左
//		c.setLayout(new FlowLayout(FlowLayout.RIGHT));// 情況三:元件排列順序從左到右,靠右
//		c.setLayout(new FlowLayout(FlowLayout.LEFT,40,30));// 情況四:元件排列順序從左到右,靠左;兩元件水平間距、上下間距(畫素)

		// 用for迴圈新增10個按鈕
		for(int i_1=1;i_1<11;i_1++){
			c.add(new JButton("按鈕"+i_1));
		}

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

2.原始碼B執行效果

在這裡插入圖片描述

(三)A為“FlowLayout.RIGHT”

當程式碼c.setLayout(new FlowLayout(A))中的A為 FlowLayout.RIGHT 時,流佈局的佈局方式為:窗體內的元件從左到右排列,元件整體則靠右。原始碼C,如下:

1.原始碼C

/**內容:
    流佈局
*/

import java.awt.Container;// 容器
import java.awt.FlowLayout;// 流佈局

import javax.swing.*;// 窗體

class Demo extends JFrame{
	public Demo(){
		setBounds(100,80,500,400);// 確定窗體座標、寬高;Bounds(邊界)
		// default(預設值);operation(計算)
		setDefaultCloseOperation(EXIT_ON_CLOSE);// 窗體點選×停止執行
		
		// content(目錄);pane(邊;窗格)
		Container c=getContentPane();// 獲取容器

		// Layout(佈局);Flow(流動)
		// 設定流佈局放於容器中
//		c.setLayout(new FlowLayout());// 情況一:預設情況;元件(按鈕)排列順序從左到右,居中
//		c.setLayout(new FlowLayout(FlowLayout.LEFT));// 情況二:元件排列順序從左到右,靠左
		c.setLayout(new FlowLayout(FlowLayout.RIGHT));// 情況三:元件排列順序從左到右,靠右
//		c.setLayout(new FlowLayout(FlowLayout.LEFT,40,30));// 情況四:元件排列順序從左到右,靠左;兩元件水平間距、上下間距(畫素)

		// 用for迴圈新增10個按鈕
		for(int i_1=1;i_1<11;i_1++){
			c.add(new JButton("按鈕"+i_1));
		}

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

2.原始碼C執行效果

在這裡插入圖片描述

(四)A為“FlowLayout.LEFT,40,30”

當程式碼c.setLayout(new FlowLayout(A))中的A為 FlowLayout.LEFT,40,30 時,流佈局的佈局方式為:窗體內的元件從左到右排列,元件整體則靠左,元件之間的水平間距為40畫素,豎直間距為30畫素。對於這裡例子的40、30畫素可以根據自己需要,調整成其他數值的畫素。原始碼D,如下:

1.原始碼D

/**內容:
    流佈局
*/

import java.awt.Container;// 容器
import java.awt.FlowLayout;// 流佈局

import javax.swing.*;// 窗體

class Demo extends JFrame{
	public Demo(){
		setBounds(100,80,500,400);// 確定窗體座標、寬高;Bounds(邊界)
		// default(預設值);operation(計算)
		setDefaultCloseOperation(EXIT_ON_CLOSE);// 窗體點選×停止執行
		
		// content(目錄);pane(邊;窗格)
		Container c=getContentPane();// 獲取容器

		// Layout(佈局);Flow(流動)
		// 設定流佈局放於容器中
//		c.setLayout(new FlowLayout());// 情況一:預設情況;元件(按鈕)排列順序從左到右,居中
//		c.setLayout(new FlowLayout(FlowLayout.LEFT));// 情況二:元件排列順序從左到右,靠左
//		c.setLayout(new FlowLayout(FlowLayout.RIGHT));// 情況三:元件排列順序從左到右,靠右
		c.setLayout(new FlowLayout(FlowLayout.LEFT,40,30));// 情況四:元件排列順序從左到右,靠左;兩元件水平間距、上下間距(畫素)

		// 用for迴圈新增10個按鈕
		for(int i_1=1;i_1<11;i_1++){
			c.add(new JButton("按鈕"+i_1));
		}

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

2.原始碼D執行效果

在這裡插入圖片描述

五、結語

記錄一事本可以粗概而論,但我還是決定分別記錄不同情況下的原始碼以及對應的執行效果。統一而論的話,怕混淆,以及往後的不知如何銜接。總之,我記錄的內容還是儘可能詳細一些,多耗費一些時間也沒關係。

六、定位日期

2020.11.3;23:13

相關文章