java中接口和事件監(jiān)聽器的深入理解
一:接口
接口在我們生活中無處不在,通過一個usb接口,我們可以通過u盤傳輸數(shù)據(jù),這個接口是被定義過的,只有指定的類型能夠使用這個接口,且通過這個接口我們傳輸?shù)臄?shù)據(jù)不會被破壞。
而在java中接口作用類似,定義一個具有特定特點的接口,在合適的地方引用它,執(zhí)行所對應的功能,這樣能夠實現(xiàn)代碼的分離。
下面我們來看一下接口的定義:
關鍵字:interface
格式:public interface 接口名{ }
接口的屬性:
[public static final]屬性類型 屬性名=屬性值;
static:靜態(tài)的,修飾的內容可以通過類名或接口名直接訪問。
final:不可改變的,修飾屬性,則屬性必須初始化。
[ ]里的內容可以省略
接口的方法:
[public abstract]方法返回值類型 方法名(參數(shù)類型 參數(shù)名)
abstract:抽象的,修飾方法,則方法不能有方法體。
[ ]中內容可以省略
接口的使用:
接口不能創(chuàng)建對象,需要接口類型的對象則需要創(chuàng)建一個類,從而實現(xiàn)接口
關鍵字:implements
格式:public class 類名 implements 接口名{ }
**注意:在類中實現(xiàn)接口時,必須實現(xiàn)接口中所有的方法**
總結來說,接口相當于制定了一種規(guī)則,只有符合這種規(guī)則了才能進入相應的接口。
二:事件監(jiān)聽機制
想象一下,比如在生活中,有一個攝像頭在監(jiān)視著小明,監(jiān)督他好好學習,如若發(fā)現(xiàn)他在做別的事情則會發(fā)出警告提示讓他繼續(xù)學習,而在java中原理也是一樣。
給事件源組件添加事件監(jiān)聽器,當事件源組件上發(fā)生相應類型的事件時,則自動的調用監(jiān)聽器中的內容。
在電腦上常見的事件類型有三種
鼠標事件:用鼠標操作組件(鼠標的移動,點擊,松開)
鍵盤事件:用鍵盤操作組件(按動鍵盤的按鍵)
動作事件:包含鼠標點擊按鈕,鍵盤確認等。
事件源組件:事件發(fā)生所在的組件,比如在一個創(chuàng)建好的畫圖板上。
事件監(jiān)聽器:java中為每一種類型的事件都提供了一個對應類型的事件監(jiān)聽器。
鼠標事件監(jiān)聽器:MouseListener
鍵盤事件監(jiān)聽器:KeyListener
動作事件監(jiān)聽器:ActionListener
事件監(jiān)聽器的實現(xiàn):
第一步:確定事件源組件
例如一個按鈕
第二步:確定事件類型
點擊按鈕則為動作事件
第三步:
創(chuàng)建一個監(jiān)聽器類,實現(xiàn)對應類型的監(jiān)聽器接口
第四步,在源程序創(chuàng)建監(jiān)聽器對象,給事件源組件添加事件監(jiān)聽器。
下面我們看一個登陸界面的實例
這一段是建立一個登陸界面
public class UI { /** * */ public void showIU(){ //建立新界面 JFrame frame=new JFrame(); frame.setSize(600, 900); //用戶點擊關閉窗口時關閉界面 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //流式布局 FlowLayout layout=new FlowLayout(); frame.setLayout(layout); //插入賬號文本框 JTextField register=new JTextField(30); frame.add(register); //標簽1 JLabel label1=new JLabel("注冊賬號"); frame.add(label1); //密碼 JPasswordField word=new JPasswordField(30); frame.add(word); //標簽2 JLabel label2= new JLabel("找回密碼"); frame.add(label2); JCheckBox checkbox=new JCheckBox("記住密碼 "); frame.add(checkbox); //設置復選框大小 Dimension check =new Dimension(200,35); checkbox.setPreferredSize(check); //加入接口類 lisener lisen=new lisener(); //給按鈕添加監(jiān)聽器 butt.addActionListener(lisen); //讓監(jiān)聽器的文本框和處理的文本框對應 lisen.nameinput=register; lisen.passinput=word; //讓監(jiān)聽器的框與此相同 lisen.jiemian=frame; word.addActionListener(lisen); /* //加入接口 Listener2 lisen1=new Listener2(); //添加監(jiān)聽器 word.addKeyListener(lisen1); //對應文本框和密碼框 lisen1.name1=register; lisen1.pass1=word; lisen1.frame=frame; */ //設置界面可見 frame.setVisible(true); } public static void main(String[] args){ UI ui=new UI(); ui.showIU(); } }
這是我們建立好的登陸界面
我們從中建立了兩個接口,兩個動作監(jiān)聽器分別監(jiān)聽按鈕是否點擊和是否按鍵盤上的按鍵,從此出現(xiàn)相應結果。
import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JDialog; import javax.swing.JTextField; import javax.swing.JOptionPane; import javax.swing.JFrame; public class lisener implements ActionListener{ JTextField nameinput; JTextField passinput; JFrame jiemian; public void actionPerformed(ActionEvent e){ System.out.println("鼠標點擊了"); String name=nameinput.getText(); String password=passinput.getText(); if(name.equals("majunlong")&&password.equals("12345678")){ System.out.println("登陸成功"); jiemian.dispose(); } else{ System.out.println("登陸失敗"); JOptionPane pane=new JOptionPane(); JOptionPane.showMessageDialog(null, "登陸失敗", "警告", JOptionPane.ERROR_MESSAGE); } } }
這是一個鼠標監(jiān)聽器,當按鈕被點擊時發(fā)出提示框登陸成功或失敗。
import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JTextField; import javax.swing.JFrame; import javax.swing.JOptionPane; public class Listener2 implements KeyListener{ JTextField name1; JFrame frame; JTextField pass1; public void keyTyped(KeyEvent e) { // TODO Auto-generated method stub } public void keyPressed(KeyEvent e) { // TODO Auto-generated method stub } public void keyReleased(KeyEvent e) { // TODO Auto-generated method stub System.out.println("鼠標點擊了"); String name=name1.getText(); String password=pass1.getText(); if(name.equals("majunlong")&&password.equals("12345678")){ System.out.println("登陸成功"); frame.dispose(); } else{ System.out.println("登陸失敗"); JOptionPane pane=new JOptionPane(); JOptionPane.showMessageDialog(null, "登陸失敗", "警告", JOptionPane.ERROR_MESSAGE); } } }
鍵盤監(jiān)聽器,在輸入密碼之后按下回車,獲得相應提示。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對我們的支持。
欄 目:Java
本文地址:http://mengdiqiu.com.cn/a1/Java/8822.html
您可能感興趣的文章
- 01-10Java實現(xiàn)動態(tài)模擬時鐘
- 01-10Springboot中@Value的使用詳解
- 01-10利用Java實現(xiàn)復制Excel工作表功能
- 01-10JavaWeb實現(xiàn)郵件發(fā)送功能
- 01-10java基于poi導出excel透視表代碼實例
- 01-10Java實現(xiàn)動態(tài)數(shù)字時鐘
- 01-10基于Java驗證jwt token代碼實例
- 01-10java實現(xiàn)液晶數(shù)字字體顯示當前時間
- 01-10淺談Java中真的只有值傳遞么
- 01-10Java動態(tài)顯示當前日期和時間


閱讀排行
本欄相關
- 01-10Java實現(xiàn)動態(tài)模擬時鐘
- 01-10Springboot中@Value的使用詳解
- 01-10JavaWeb實現(xiàn)郵件發(fā)送功能
- 01-10利用Java實現(xiàn)復制Excel工作表功能
- 01-10Java實現(xiàn)動態(tài)數(shù)字時鐘
- 01-10java基于poi導出excel透視表代碼實例
- 01-10java實現(xiàn)液晶數(shù)字字體顯示當前時間
- 01-10基于Java驗證jwt token代碼實例
- 01-10Java動態(tài)顯示當前日期和時間
- 01-10淺談Java中真的只有值傳遞么
隨機閱讀
- 01-11ajax實現(xiàn)頁面的局部加載
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10delphi制作wav文件的方法
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-10C#中split用法實例總結
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
- 04-02jquery與jsp,用jquery
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文