[引言]
我們?cè)趯W(xué)習(xí)Java編程的時(shí)候宋梧,如果需要開(kāi)發(fā)客戶端窗體類型的程序匣沼,可以使用JDK中的awt和swing庫(kù)。本文開(kāi)始小博老師就繼續(xù)為大家演示Java窗體編程中的各類監(jiān)聽(tīng)器捂龄,今天主要講解鼠標(biāo)監(jiān)聽(tīng)器中的事件释涛。
[步驟閱讀一]鼠標(biāo)監(jiān)聽(tīng)器事件列表
監(jiān)聽(tīng)器的主要作用,是為窗體中的控件增加與用戶行為之間的交互功能倦沧,使得整個(gè)窗體應(yīng)用程序擁有活躍的元素唇撬,加強(qiáng)用戶體驗(yàn)性。
其中常用監(jiān)聽(tīng)器主要分為:鼠標(biāo)監(jiān)聽(tīng)器(MouseListener)展融、鼠標(biāo)手勢(shì)監(jiān)聽(tīng)器(MouseMotionListener)窖认、鍵盤(pán)監(jiān)聽(tīng)器(KeyListener)、窗體監(jiān)聽(tīng)器(WindowListener)、行為監(jiān)聽(tīng)器(ActionListener)等頂層接口耀态。
今天小博老師就為大家主要講解鼠標(biāo)監(jiān)聽(tīng)器(MouseListener)轮傍,我們首先來(lái)了解一下鼠標(biāo)監(jiān)聽(tīng)器可以與用戶的哪些行為進(jìn)行交互,它們均以接口中的方法來(lái)封裝:
voidmouseReleased(MouseEvent e):鼠標(biāo)釋放事件
voidmousePressed(MouseEvent e):鼠標(biāo)按下事件
voidmouseExited(MouseEvent e):鼠標(biāo)離開(kāi)事件
voidmouseEntered(MouseEvent e):鼠標(biāo)進(jìn)入事件
voidmouseClicked(MouseEvent e):鼠標(biāo)點(diǎn)擊事件
這些方法均擁有一個(gè)形參(MouseEvent)首装,該參數(shù)是鼠標(biāo)事件對(duì)象创夜,其中包含了當(dāng)前事件觸發(fā)時(shí),真?zhèn)€事件的各類數(shù)據(jù)信息仙逻,比如:觸發(fā)事件的控件驰吓、觸發(fā)事件的按鈕(左鍵還是右鍵),觸發(fā)事件的模式(單擊還是雙擊)系奉,觸發(fā)事件時(shí)鼠標(biāo)的坐標(biāo)等等檬贰。
[步驟閱讀二]鼠標(biāo)監(jiān)聽(tīng)器的使用
接下來(lái),小博老師通過(guò)一個(gè)簡(jiǎn)單的按鈕缺亮,帶大家一起體驗(yàn)一下鼠標(biāo)監(jiān)聽(tīng)器的使用方式翁涤,核心代碼如下:
publicclassMenuFrameextendsJFrame{
publicMenuFrame(){
setBounds(100, 20, 600, 400);
setLayout(null);
// 實(shí)例化 標(biāo)簽控件
lb=newJLabel();
lb.setBounds(20, 50, 200, 25);
add(lb);
// 循環(huán) 多個(gè) 按鈕控件 (非固定代碼,僅作為監(jiān)聽(tīng)器演示)
for(inti= 0 ;i<= 4 ;i++ ){
// 實(shí)例化 按鈕控件
JButtonbt=newJButton("按 ?鈕");
bt.setBounds(20+ 85 *i, 20, 80, 25);
add(bt);
bt.setBackground(newColor(230,230,230));
bt.setForeground(newColor(0,0,0));
bt.setName("按鈕"+(i+1));
// 為 按鈕控件 添加鼠標(biāo)監(jiān)聽(tīng)器
bt.addMouseListener(newMouseListener() {
// 鼠標(biāo)釋放事件
publicvoidmouseReleased(MouseEvente) {
// 獲取當(dāng)前事件源控件(按鈕控件)
JButtonsrc= (JButton)e.getSource();
// 恢復(fù)事件源控件(按鈕控件)外觀樣式
src.setBackground(newColor(100,150,100));
src.setForeground(newColor(255,255,255));
}
// 鼠標(biāo)按下事件
publicvoidmousePressed(MouseEvente) {
// 獲取當(dāng)前事件源控件(按鈕控件)
JButtonsrc= (JButton)e.getSource();
// 改變事件源控件(按鈕控件)外觀樣式
src.setBackground(newColor(100,100,100));
src.setForeground(newColor(255,100,100));
}
// 鼠標(biāo)離開(kāi)事件
publicvoidmouseExited(MouseEvente) {
// 獲取當(dāng)前事件源控件(按鈕控件)
JButtonsrc= (JButton)e.getSource();
// 恢復(fù)事件源控件(按鈕控件)外觀樣式
src.setBackground(newColor(230,230,230));
src.setForeground(newColor(0,0,0));
}
// 鼠標(biāo)進(jìn)入事件
publicvoidmouseEntered(MouseEvente) {
// 獲取當(dāng)前事件源控件(按鈕控件)
JButtonsrc= (JButton)e.getSource();
// 改變事件源控件(按鈕控件)外觀樣式
src.setBackground(newColor(100,150,100));
src.setForeground(newColor(255,255,255));
}
// 鼠標(biāo)點(diǎn)擊事件
publicvoidmouseClicked(MouseEvente) {
// 獲取當(dāng)前事件源控件(按鈕控件)
JButtonsrc= (JButton)e.getSource();
// 在 標(biāo)簽控件 中 顯示當(dāng)前事件源控件(按鈕控件)名稱
lb.setText("當(dāng)前被點(diǎn)擊的是:"+src.getName());
}
});
}
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
privateJLabellb;
}
實(shí)例化窗體對(duì)象并且運(yùn)行后萌踱,測(cè)試各類事件效果如下: