您的位置:首頁>設計>正文

小白也能看懂,JAVA基礎 GUI圖形化使用者介面 分享!

溫馨提示:本文細讀需要6分鐘, 都是乾貨就別速讀了, 收藏吧!

今天來分享的就是 GUI(圖形化使用者介面)這部分內容誰然這塊用的很少了, 但任然這是 JavaSE 的一部分!

那麼今天我們就來簡單的分享一下, 讓夥伴們知道

這是 JavaSE 的一部分!

看!這是 JavaSE 的一部分!

首先給大家介紹兩個包

AWT 與 Swing

AWT 可以理解為第一代用於圖形程式設計的包, 但是 AWT 很依賴於本地作業系統平臺, 當我們把設計好的程式移植到其他平臺的系統運行時, 不能保證這個軟體的外觀佈局不會改變, 這很讓人苦惱。

於是針對於AWT的控制項部分進行了改進也就是之後的 Swing 包,

Swing 是基於 AWT 包的改進。 相比于 AWT 包來說控制項更多, 而且對本地作業系統平臺的依賴性小。

注意

AWT 包中除了元件還包括事件監聽, Swing 只是針對控制項這部分改進!

那麼如何判斷組件是屬於 AWT 還是 Swing 的包呢?

看!

AWTButtonPanelFrameLable

SwingJButtonJPanelJFrameJLable

很明顯名稱前面加上J 的, 就是我們的 Swing 包中的組件了, 那麼我們就只介紹 Swing 包中的組件, 跳過 AWT 的組件。

容器

因為我們的各種按鈕元件都需要有一個載體, 就像我們去飯店吃飯, 服務生都會端個盤子, 用來裝菜, 沒有直接把菜上到桌子上的!(再說桌子也算是一種容器...)

容器有表單(JFrame)與面板(JPanel), 表單就是吃飯的桌子, 面板就是吃飯的盤子。 其他的組件就是我們的菜了...

現在讓我們來創建一個視窗

這樣一個視窗就寫出來了

面板

下面我們在來看一下面板, 其實面板有兩種使用方式

一.是寫個類繼承JPanel(或Panel)稱為自訂面板

二.是直接使用JPanel(或Panel)

這邊給大家演示一的是自訂面板,與其說是面板其實更像是畫板,我們可以在上面話很多東西。

這就是 paint() 方法提供的我們可以畫的內容

下面就讓我們來試一下

然後把面板添加進我們的表單

看一下效果

很醜是不是!

剩下的就不給大家演示了

大家可以自己去試一下!

JPanel

現在我們一般是直接使用 JPanel

像這樣

下面給大家介紹一下

一些常用的元件

常用的元件

這其中包括

標籤JLable:顯示資訊, 標記資訊

按鈕JButton

文 本 域 JTextField

選項按鈕 JRadioButton

複選CheckBox

下 拉 框JComboBox

然後把這些元件添加到面板上

值得注意的是

要想實現單選功能需要創建一個組

然後把我們的選項按鈕添加到組裡

這樣才可以實現單選

而多選就不用建組了

下面是我們的核取方塊

只要創建一個陣列把內容寫好添加進去

然後再添加進面板裡就可以了呢!

這是效果圖:

看著很彆扭對吧!

其實我們的swing包中是有很多組件的

呐!你看

就不給大家一一演示了哈!

大家有時間就自己試著用一下。


佈局

下面我們來看一下佈局

流式佈局

就是我們的預設佈局

組件會以行的形式

按照從左到右

以最完美的方式排列

我們來看拿一下效果

可以這樣

這樣

或者這樣

我們可以發現改變表單大小

可以改變他們的排列方式

下面給我們的代碼添加流式佈局

因為流式佈局與默認佈局效果一樣

就不上圖了

這個佈局管理器的構造函數,有三個參數,

第一個代表元件的對齊方式

0或FlowLayout.lEFT ,控制項左對齊

1或FlowLayout.CENTER ,居中對齊

2或FlowLayout.RIGHT ,右對齊

3或FlowLayout.LEADING,控制項與容器方向開始邊對應

4或FlowLayout.TRAILING,控制項與容器方向結束邊對應

後面的第二位元代表元件左右的距離

最後一位代表上下的距離

剩下的夥伴們自己去試一試吧!

邊界佈局(或稱邊框佈局)

邊界佈局會將容器劃分為

東西 南 北 中

五個區域

所有元件按照東西南北中的方式擺放,每塊區域只能直接放置一個元件,除中間區域外,其他區域不留空

(如果其他區域沒有元件則會被頂掉)

看一下效果

分成了5個區域,每個區域一個按鈕,那我們想要,在南面再增加一個按鈕,就需要換一下思路了!

利用面板

看一下效果

(六娃會隱身所以不見了)

所以我們要靈活的運用邊界佈局,不要以為邊界只可以放置5個元件,不然邊界佈局就廢了。

對不對!

網格佈局

顧名思義就是像格子一樣的佈局,當我們定義格子數不夠的時候,行數不改變,列數自動增加!

上代碼:

看效果

網格佈局的構造方法,除了可以規定行數與列數,還可以規定格子之間,左右與上下的間距、

效果如圖:

這就是網格佈局

卡片佈局

卡片佈局就像我們玩的撲克牌一樣,元件與元件之間是層疊擺放的。

首先定義好卡片的區域

切換卡片的按鈕

然後寫我們的按鈕添加到面板上

將面板添加到表單中

卡片面板與按鈕面板

利用的是邊框佈局

這裡用的是事件監聽

等下我們會說呦!

好的下面讓我們來看一下效果:

下一頁

下一頁

點擊下一頁就可以切換我們的卡片!

(顏色使我們設置的背景顏色)

監聽事件

好的我們簡單的介紹了一下元件以及佈局,那麼現在我們來看一下監聽事件,事件監聽需要。

事件源(元件)

事件監聽者(監聽器)

事件的動作

創建一個表單來演示一下

我們之前是用 注釋掉的那部分實現的關閉視窗,程式退出!現在我們使用視窗監聽來實現這個功能,創造一個監聽類 MyListener 實現 WindowListener 介面,然後創建一個監聽物件添加進去。

這個事件監聽效果的話!夥伴們自己試一下!適配器模式,我們也看見了。

這個介面中的方法我們實際上只用到了一個!但是需要實現介面的所有方法,很麻煩。

給大家分享一個適配器模式的原理

當一個介面中有眾多方法,在實現該介面時,如果只實現部分功能,不需要實現全部功能。就可以先定義一個類,實現該介面,重寫空實現所有方法,將該類設計為抽象類別。定義類繼承該抽象類別,實現需要實現的方法,而無需全部實現!

就像這樣

就像這個樣子就是空實現

然後繼承這個類只把我們需要的方法實現就好

是不是很簡潔

Java 為我們提供了很多對應的適配器呦!

我們的 JavaSE 中是有很多包的

額!

其實有很多類我也是沒有用過的!所以只有給大家分享這麼多了!

夥伴們要想提升自己的能力

一定要學會自己學習!

一定要會查API呀!

好的小夥伴們!

娜姐的GUI就分享到這裡了

加油!喜歡的話請關注我哦!

然後把這些元件添加到面板上

值得注意的是

要想實現單選功能需要創建一個組

然後把我們的選項按鈕添加到組裡

這樣才可以實現單選

而多選就不用建組了

下面是我們的核取方塊

只要創建一個陣列把內容寫好添加進去

然後再添加進面板裡就可以了呢!

這是效果圖:

看著很彆扭對吧!

其實我們的swing包中是有很多組件的

呐!你看

就不給大家一一演示了哈!

大家有時間就自己試著用一下。


佈局

下面我們來看一下佈局

流式佈局

就是我們的預設佈局

組件會以行的形式

按照從左到右

以最完美的方式排列

我們來看拿一下效果

可以這樣

這樣

或者這樣

我們可以發現改變表單大小

可以改變他們的排列方式

下面給我們的代碼添加流式佈局

因為流式佈局與默認佈局效果一樣

就不上圖了

這個佈局管理器的構造函數,有三個參數,

第一個代表元件的對齊方式

0或FlowLayout.lEFT ,控制項左對齊

1或FlowLayout.CENTER ,居中對齊

2或FlowLayout.RIGHT ,右對齊

3或FlowLayout.LEADING,控制項與容器方向開始邊對應

4或FlowLayout.TRAILING,控制項與容器方向結束邊對應

後面的第二位元代表元件左右的距離

最後一位代表上下的距離

剩下的夥伴們自己去試一試吧!

邊界佈局(或稱邊框佈局)

邊界佈局會將容器劃分為

東西 南 北 中

五個區域

所有元件按照東西南北中的方式擺放,每塊區域只能直接放置一個元件,除中間區域外,其他區域不留空

(如果其他區域沒有元件則會被頂掉)

看一下效果

分成了5個區域,每個區域一個按鈕,那我們想要,在南面再增加一個按鈕,就需要換一下思路了!

利用面板

看一下效果

(六娃會隱身所以不見了)

所以我們要靈活的運用邊界佈局,不要以為邊界只可以放置5個元件,不然邊界佈局就廢了。

對不對!

網格佈局

顧名思義就是像格子一樣的佈局,當我們定義格子數不夠的時候,行數不改變,列數自動增加!

上代碼:

看效果

網格佈局的構造方法,除了可以規定行數與列數,還可以規定格子之間,左右與上下的間距、

效果如圖:

這就是網格佈局

卡片佈局

卡片佈局就像我們玩的撲克牌一樣,元件與元件之間是層疊擺放的。

首先定義好卡片的區域

切換卡片的按鈕

然後寫我們的按鈕添加到面板上

將面板添加到表單中

卡片面板與按鈕面板

利用的是邊框佈局

這裡用的是事件監聽

等下我們會說呦!

好的下面讓我們來看一下效果:

下一頁

下一頁

點擊下一頁就可以切換我們的卡片!

(顏色使我們設置的背景顏色)

監聽事件

好的我們簡單的介紹了一下元件以及佈局,那麼現在我們來看一下監聽事件,事件監聽需要。

事件源(元件)

事件監聽者(監聽器)

事件的動作

創建一個表單來演示一下

我們之前是用 注釋掉的那部分實現的關閉視窗,程式退出!現在我們使用視窗監聽來實現這個功能,創造一個監聽類 MyListener 實現 WindowListener 介面,然後創建一個監聽物件添加進去。

這個事件監聽效果的話!夥伴們自己試一下!適配器模式,我們也看見了。

這個介面中的方法我們實際上只用到了一個!但是需要實現介面的所有方法,很麻煩。

給大家分享一個適配器模式的原理

當一個介面中有眾多方法,在實現該介面時,如果只實現部分功能,不需要實現全部功能。就可以先定義一個類,實現該介面,重寫空實現所有方法,將該類設計為抽象類別。定義類繼承該抽象類別,實現需要實現的方法,而無需全部實現!

就像這樣

就像這個樣子就是空實現

然後繼承這個類只把我們需要的方法實現就好

是不是很簡潔

Java 為我們提供了很多對應的適配器呦!

我們的 JavaSE 中是有很多包的

額!

其實有很多類我也是沒有用過的!所以只有給大家分享這麼多了!

夥伴們要想提升自己的能力

一定要學會自己學習!

一定要會查API呀!

好的小夥伴們!

娜姐的GUI就分享到這裡了

加油!喜歡的話請關注我哦!

Next Article
喜欢就按个赞吧!!!
点击关闭提示