您現在的位置是:首頁 > 武術
Java Swing JPanel 使用 BorderLayout 和 FlowLayout 的佈局詳解
- 由 萊迪娜的風聲 發表于 武術
- 2023-01-03
equal為什麼重寫
今天我們將學習java swing的JPanel 的建立以及 BorderLayout 和 FlowLayout這兩個佈局類的詳解,這篇文章主要涉及以下幾個方面。
1、什麼是JPanel,並建立JPanel。
2、JPanel的兩個佈局類BorderLayout和FlowLayout的詳解。
什麼是JPanel?簡單地說, JPanel是一個簡單的容器類,它為應用程式新增其他元件提供了空間。JPanel有自己的佈局管理器,與包含它的JFrame分開。
我這邊又建立了一個新的java專案,名為swing_jpanel,並添加了一些swing程式碼來建立一個新的JFrame。
JFrame是我們在上一個文章中討論過的元件,沒有經驗的可以進我的主頁先去看看那篇文章。
在開始JPanel 之前我們先看一下JPanel的建構函式。
JPanel的建構函式(也稱為構造方法)總共有四種,見下圖:
預設的JPanel也就是 new JPanel()等於Flow JPanel,如果你看過我之前的文章,就知道JFrame有一個預設的邊框(BorderLayout)佈局管理器,而預設的JPanel的佈局管理器是一個流(FLowLayout)佈局。
注意這裡的預設佈局,我們都知道,在沒有指定任何佈局的情況下,你往JFrame中新增一個Jbutton,那麼這個Jbutton 將佔據這個JFrame的全部面板,類似下面這樣。
看起來很醜是不是 - -,哈哈,我也想吐槽來著。
這是預設沒有新增任何佈局的JFrame程式碼。
下面是這個超大按鈕的介面原始碼
所以你如果是在JFrame中使用BorderLayout這個佈局管理器,我們不必特別指定任何引數就可以使用,因為它們是預設值,但是如果我們想要更改與佈局管理器相關的任何引數,我們就必須要顯式地指定這些引數。
接下來再來看看JPanel的預設佈局,
再來看看形成這個面板的程式碼
在這個程式碼中,我們並沒有顯式的設定任何佈局,而它預設的形成了上面的樣式,也就是流式佈局。下面,讓我們為JPanel設定另外一種佈局管理器,也就是BorderLayout,或者叫邊框、邊界佈局管理器。
在這裡我們可以指定新增到JPanel中的元件的對齊方式以及水平和垂直的差距。
注意:
new BorderLayout的引數 hgap 和 vgap 的意思分別指的是 水平間距,以及垂直間距。
hgap是水平間距,vgap是垂直間距。
注:
水平間距 指的是 橫向 座標點 間距 ,也就是 X 軸 距離
垂直間距 指的是 縱向 座標點 間距 ,也就是 Y 軸 距離
我們來看這樣一段程式碼。
為了更大的看出效果,水平間距我調到30,垂直間距我調到 1
看結果
(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型別,引數 代表了 控制元件的對齊方式:
以下是引數列表
我們來應用嘗試一下。
這種是Left
這種是Right
這種為Leading
這種是Trailing
要注意的是 leading 和 left是同樣的;trailing 與 right是同樣的。
Leading表示開始的位置,Trailing表示結束的位置。
而 FlowLayout的第三個建構函式,引數分別代表起始位置,水平間隔,垂直間隔。關於這個在上面已經講過,我們這邊不再累述。
這篇文章到這裡就結束了,如果對你有幫助,還希望你點贊收藏加關注!如果有其他問題或者建議可以在評論區留言指出。
本文使用系統:win7 64
Java開發環境:Eclipse 2022-10-19
JDK版本:JDK17