小博老師解析Java核心技術(shù) ——JSwing窗體狀態(tài)監(jiān)聽事件

[引言]

我們在學(xué)習(xí)Java編程的時候,如果需要開發(fā)客戶端窗體類型的程序,可以使用JDK中的awt和swing庫。本文開始小博老師就繼續(xù)為大家演示Java窗體編程中的各類監(jiān)聽器,今天主要講解窗體狀態(tài)監(jiān)聽器中的事件。

[步驟閱讀一]窗體狀態(tài)監(jiān)聽器事件列表

監(jiān)聽器的主要作用,是為窗體中的控件增加與用戶行為之間的交互功能,使得整個窗體應(yīng)用程序擁有活躍的元素,加強用戶體驗性。

其中常用監(jiān)聽器主要分為:鼠標監(jiān)聽器(MouseListener)、鼠標手勢監(jiān)聽器(MouseMotionListener)、鍵盤監(jiān)聽器(KeyListener)、窗體監(jiān)聽器(WindowListener)、行為監(jiān)聽器(ActionListener)等頂層接口。

今天小博老師就為大家主要講解窗體狀態(tài)監(jiān)聽器(WindowStateListener),我們首先來了解一下窗體狀態(tài)監(jiān)聽器可以與用戶的哪些行為進行交互,它們均以接口中的方法來封裝:

voidwindowStateChanged(WindowEvente):窗體狀態(tài)改變事件

這個方法擁有一個形參(WindowEvent),該參數(shù)是窗體事件對象,其中包含了當(dāng)前事件觸發(fā)時,整個事件的各類數(shù)據(jù)信息,比如:觸發(fā)事件的控件、當(dāng)前窗體的狀態(tài)等等信息。

窗體狀態(tài)的改變,是我們在窗體程序開發(fā)過程中非常重要的一個事件,我們的應(yīng)用界面布局、業(yè)務(wù)邏輯通常會因為窗體狀態(tài)的改變而隨之變化。

[步驟閱讀二]窗體狀態(tài)監(jiān)聽器的使用

接下來,小博老師通過一個簡單的案例,制作一個簡單的選項功能,這個選項的界面布局隨著窗體狀態(tài)的改變而變化,當(dāng)窗體最大化時以循環(huán)按鈕的形式布局,當(dāng)窗體處于普通狀態(tài)時則以下拉選項的布局展現(xiàn)。通過這個案例讓大家一起體驗一下窗體狀態(tài)監(jiān)聽器的使用方式,核心代碼如下:

publicclassMenuFrameextendsJFrame{

publicMenuFrame(){

super("博為峰教育");

setBounds(100, 20, 600, 400);

setLayout(null);

// 窗體啟動時默認普通狀態(tài) 以下拉列表形式展現(xiàn)選項

JComboBoxcbx=newJComboBox(options);

cbx.setBounds(20, 20, 200, 25);

add(cbx);

// 為窗體注冊 窗體狀態(tài)改變監(jiān)聽器

addWindowStateListener(newWindowStateListener() {

// 窗體狀態(tài)改變事件

publicvoidwindowStateChanged(WindowEvente) {

getContentPane().removeAll();

// 判斷當(dāng)前窗體是否處于最大化

if(e.getNewState() ==MAXIMIZED_BOTH){

// 窗體最大化時 以展開按鈕形式顯示選項

for(inti= 0 ;i<=options.length- 1;i++ ){

JButtonbt=newJButton(options[i]);

bt.setBounds(200*i+20, 20, 200, 25);

add(bt);

}

}

// 判斷當(dāng)前窗體是否處于普通狀態(tài)

elseif(e.getNewState() ==NORMAL){

// 窗體普通狀態(tài) 以下拉列表形式展現(xiàn)選項

JComboBoxcbx=newJComboBox(options);

cbx.setBounds(20, 20, 200, 25);

add(cbx);

}

}

});

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

// 選項數(shù)據(jù)源

String[]options=newString[]{

"上海漕河涇中心",

"北京回龍觀中心",

"深圳華強北中心",

"南京新街口中心",

"成都航空路中心"

};

}

實例化窗體對象并且運行后,測試各類事件效果如下:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容