您現在的位置是:首頁 > 武術

Java Swing JPanel 使用 BorderLayout 和 FlowLayout 的佈局詳解

  • 由 萊迪娜的風聲 發表于 武術
  • 2023-01-03
簡介JPanel的建構函式(也稱為構造方法)總共有四種,見下圖:預設的JPanel也就是 new JPanel()等於Flow JPanel,如果你看過我之前的文章,就知道JFrame有一個預設的邊框(BorderLayout)佈局管理器,而默

equal為什麼重寫

今天我們將學習java swing的JPanel 的建立以及 BorderLayout 和 FlowLayout這兩個佈局類的詳解,這篇文章主要涉及以下幾個方面。

1、什麼是JPanel,並建立JPanel。

2、JPanel的兩個佈局類BorderLayout和FlowLayout的詳解。

什麼是JPanel?簡單地說, JPanel是一個簡單的容器類,它為應用程式新增其他元件提供了空間。JPanel有自己的佈局管理器,與包含它的JFrame分開。

我這邊又建立了一個新的java專案,名為swing_jpanel,並添加了一些swing程式碼來建立一個新的JFrame。

Java Swing JPanel 使用 BorderLayout 和 FlowLayout 的佈局詳解

JFrame是我們在上一個文章中討論過的元件,沒有經驗的可以進我的主頁先去看看那篇文章。

在開始JPanel 之前我們先看一下JPanel的建構函式。

JPanel的建構函式(也稱為構造方法)總共有四種,見下圖:

Java Swing JPanel 使用 BorderLayout 和 FlowLayout 的佈局詳解

預設的JPanel也就是 new JPanel()等於Flow JPanel,如果你看過我之前的文章,就知道JFrame有一個預設的邊框(BorderLayout)佈局管理器,而預設的JPanel的佈局管理器是一個流(FLowLayout)佈局。

注意這裡的預設佈局,我們都知道,在沒有指定任何佈局的情況下,你往JFrame中新增一個Jbutton,那麼這個Jbutton 將佔據這個JFrame的全部面板,類似下面這樣。

Java Swing JPanel 使用 BorderLayout 和 FlowLayout 的佈局詳解

看起來很醜是不是 - -,哈哈,我也想吐槽來著。

這是預設沒有新增任何佈局的JFrame程式碼。

下面是這個超大按鈕的介面原始碼

Java Swing JPanel 使用 BorderLayout 和 FlowLayout 的佈局詳解

所以你如果是在JFrame中使用BorderLayout這個佈局管理器,我們不必特別指定任何引數就可以使用,因為它們是預設值,但是如果我們想要更改與佈局管理器相關的任何引數,我們就必須要顯式地指定這些引數。

接下來再來看看JPanel的預設佈局,

Java Swing JPanel 使用 BorderLayout 和 FlowLayout 的佈局詳解

再來看看形成這個面板的程式碼

Java Swing JPanel 使用 BorderLayout 和 FlowLayout 的佈局詳解

在這個程式碼中,我們並沒有顯式的設定任何佈局,而它預設的形成了上面的樣式,也就是流式佈局。下面,讓我們為JPanel設定另外一種佈局管理器,也就是BorderLayout,或者叫邊框、邊界佈局管理器。

在這裡我們可以指定新增到JPanel中的元件的對齊方式以及水平和垂直的差距。

Java Swing JPanel 使用 BorderLayout 和 FlowLayout 的佈局詳解

注意:

new BorderLayout的引數 hgap 和 vgap 的意思分別指的是 水平間距,以及垂直間距。

hgap是水平間距,vgap是垂直間距。

注:

水平間距 指的是 橫向 座標點 間距 ,也就是 X 軸 距離

垂直間距 指的是 縱向 座標點 間距 ,也就是 Y 軸 距離

Java Swing JPanel 使用 BorderLayout 和 FlowLayout 的佈局詳解

我們來看這樣一段程式碼。

Java Swing JPanel 使用 BorderLayout 和 FlowLayout 的佈局詳解

為了更大的看出效果,水平間距我調到30,垂直間距我調到 1

看結果

Java Swing JPanel 使用 BorderLayout 和 FlowLayout 的佈局詳解

(1)紅色部分都是間距,為了方便我將佈局顏色調整為了紅色。

(2)Button 2 與 Button 4 之間的這個寬度,也就是水平間距為 30

(3)我們再測量一下 間隔單位 是否 確切為畫素

(4)首先獲取 button 2 左側邊欄的距離,相對於桌面螢幕邊緣的,X軸距離為 705

(5)然後獲取 button 4 右側邊欄的距離,相對於桌面螢幕邊緣的,X軸距離為 735

(6)可以確定,這個距離的單位為 畫素點,也就是間隔 多少多少個畫素點。

我們再來看 JPanel 的流式佈局,這一次我們要顯式的指定它的引數。

前面講了,JPanel的佈局預設是流式的,而流式佈局的預設選擇是居中的,我們想要調整流式佈局要怎麼做呢?

我們需要第二種構造方式,new FlowLayout(int align),並向其中傳遞一個引數,這個引數為 int型別,引數 代表了 控制元件的對齊方式:

以下是引數列表

Java Swing JPanel 使用 BorderLayout 和 FlowLayout 的佈局詳解

我們來應用嘗試一下。

這種是Left

Java Swing JPanel 使用 BorderLayout 和 FlowLayout 的佈局詳解

這種是Right

Java Swing JPanel 使用 BorderLayout 和 FlowLayout 的佈局詳解

這種為Leading

Java Swing JPanel 使用 BorderLayout 和 FlowLayout 的佈局詳解

這種是Trailing

Java Swing JPanel 使用 BorderLayout 和 FlowLayout 的佈局詳解

要注意的是 leading 和 left是同樣的;trailing 與 right是同樣的。

Leading表示開始的位置,Trailing表示結束的位置。

而 FlowLayout的第三個建構函式,引數分別代表起始位置,水平間隔,垂直間隔。關於這個在上面已經講過,我們這邊不再累述。

這篇文章到這裡就結束了,如果對你有幫助,還希望你點贊收藏加關注!如果有其他問題或者建議可以在評論區留言指出。

本文使用系統:win7 64

Java開發環境:Eclipse 2022-10-19

JDK版本:JDK17

Top