[引言]
我們在學(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)聽器主要分為:鼠標(biāo)監(jiān)聽器(MouseListener)赐俗、鼠標(biāo)手勢監(jiān)聽器(MouseMotionListener)拉队、鍵盤監(jiān)聽器(KeyListener)、窗體監(jiān)聽器(WindowListener)阻逮、行為監(jiān)聽器(ActionListener)等頂層接口粱快。
今天小博老師就為大家主要講解窗體狀態(tài)監(jiān)聽器(WindowStateListener),我們首先來了解一下窗體狀態(tài)監(jiān)聽器可以與用戶的哪些行為進(jì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);
// 窗體啟動時默認(rèn)普通狀態(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[]{
"上海漕河涇中心",
"北京回龍觀中心",
"深圳華強北中心",
"南京新街口中心",
"成都航空路中心"
};
}
實例化窗體對象并且運行后编整,測試各類事件效果如下: