java是面向過程的編程語言:Java是一種可以撰寫跨平臺應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計語言顺少。Java 技術(shù)具有卓越的通用性潭兽、高效性倦始、平臺移植性和安全性,廣泛應(yīng)用于PC山卦、數(shù)據(jù)中心鞋邑、游戲控制臺、科學(xué)超級計算機(jī)账蓉、移動電話和互聯(lián)網(wǎng)枚碗,同時擁有全球最大的開發(fā)者專業(yè)社群。
給你java學(xué)習(xí)路線:html-css-js-jq-javase-數(shù)據(jù)庫-jsp-servlet-Struts2-hibernate-mybatis-spring4-springmvc-ssh-ssm
小編推薦一個學(xué)Java的學(xué)習(xí)裙【 六五零铸本,五五四肮雨,六零七 】,無論你是大牛還是小白箱玷,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)酷含!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享汪茧!
1.?GUI編程引言
以前的學(xué)習(xí)當(dāng)中椅亚,我們都使用的是命令交互方式:
例如:在DOS命令行中通過javac java命令啟動程序.
軟件的交互的方式:
1. 命令交互方式
圖書管理系統(tǒng)
2. 圖形交互方式
Java提供了專業(yè)的API用于開發(fā)圖形用戶界面
GUI-->Graphic User Interface
將要了解GUI API的框架結(jié)構(gòu),以及GUI組件以及組件之間的關(guān)系,容器和布局管理器,顏色,字體等.
2.?GUI的分類
2.1.?AWT
Java1.0版本的圖形用戶界面庫,設(shè)計目標(biāo)是幫助程序員編寫在所有平臺上都能良好表現(xiàn)的GUI程序舱污。為了實(shí)現(xiàn)這個目標(biāo)Java1.0提供了抽象窗口工具集(AWT)呀舔,但是這個目標(biāo)并沒有達(dá)到。AWT在所有的系統(tǒng)上表現(xiàn)都不好扩灯。因?yàn)椋鹤畛醢姹镜腁WT是在一個月內(nèi)構(gòu)思媚赖,設(shè)計和實(shí)現(xiàn)的(Think in Java )。
Abstract Window Toolkit 抽象窗口工具集
Java將圖形用戶界面相關(guān)的類捆綁在了一起,放在了一個稱之為抽象窗口工具集的庫中.AWT適合開發(fā)簡單的圖形用戶界面,并不適合開發(fā)復(fù)雜的GUI項(xiàng)目.
位于: java.awt.* 中,定義了很多的組件類珠插,開發(fā)者可以直接創(chuàng)建對象加以使用
缺點(diǎn): 所有的圖形界面都依賴于底層的操作系統(tǒng),容易發(fā)生于特定平臺相關(guān)的故障.
AWT調(diào)用本地系統(tǒng)資源生成圖形化界面, 依賴本地平臺. 1.0
2.2.?Swing
SUN公司對AWT進(jìn)行了升級惧磺,基于AWT,推出了一種更穩(wěn)定,更通用和更靈活的庫.稱之為Swing組件庫(Swing component)捻撑。
既然都是用于GUI設(shè)計的組件庫,那么為了區(qū)分Swing組件類和對應(yīng)的AWT組件類,Swing組件類都已字母J為前綴.位于:javax.swing.* 中,提供了和AWT中等同的所有的組件類磨隘,但是類名的前面多加了一個J.
SWING可以跨平臺. 1.2
我們主要學(xué)習(xí)Swing GUI組件.
3.?Java GUI API
GUI API包含的類分為三個部分:組件類(component class) 容器類(container class),和輔助類(helper class)
1. 組件類是用來創(chuàng)建用戶圖形界面的,例如JButton,JLabel,JTextField.
2. 容器類是用來包含其他組件的,例如JFrame,JPanel
3. 輔助類是用來支持GUI組件的,例如Color,Font
3.1.?組件類
在圖形用戶界面程序中當(dāng)我們想要創(chuàng)建按鈕、復(fù)選框和滾動條等這些可以顯示在屏幕上的對象顾患,該如何創(chuàng)建番捂。其實(shí)這些都屬于一類叫做組件類。
AWT中的組件根類
Swing中的組件根類
組件類的實(shí)例可以顯示在屏幕上.Component類是包括容器類的所有用戶界面類的根類是java.awt中的類,對應(yīng)的Swing中的是Jcomponent.了解了Component和JComponent都是抽象類.所以不能使用new關(guān)鍵字創(chuàng)建對象.所以需要使用它們的具體的實(shí)現(xiàn)類來創(chuàng)建對象.
在AWT中典型圖形用戶界面中的按鈕(Button)江解、復(fù)選框(Checkbox)和滾動條(Scrollbar)都是組件類,都是Component類的子類.
在Swing中的GUI組件,有對應(yīng)的JButton,JCheckBox,JscrollBar
繼承關(guān)系圖(AWT)
3.2.?容器類
容器(Container)设预,是一個特殊的組件,該組件可以通過add()添加其他組件犁河。
容器類適用于盛裝其他GUI組件的GUI組件.例如 Panel Frame Dialog都是AWT組件的容器類.對應(yīng)的Swing組件的容器類是JPanel JFrame JDialog
3.3.?GUI輔助類
用來描述GUI組件的屬性,例如圖像的顏色,字體等. 注意:輔助類是在java.awt中的
3.4.?GUI運(yùn)行原理
在JDK的bin目錄中有javaw.exe .javaw.exe是java在window中專門用于執(zhí)行GUI程序.
4.?體驗(yàn)GUI
5.?Jframe框架
JFrame(框架)是一個容器
創(chuàng)建一個用戶界面需要創(chuàng)建一個JFrame來存放用戶界面組件.例如存放按鈕鳖枕,文本框魄梯。
5.1.?創(chuàng)建一個框架
注意:需要調(diào)用setVisible(true)方法后才會顯示框架
運(yùn)行程序會在窗口的左上角顯示一個窗口,但是只能顯示標(biāo)題欄,而且關(guān)閉JFrame時,程序程序沒有停止.
所以需要完成如下需求:
1: 設(shè)置Jframe的寬度和高度
2: 讓Jframe顯示在屏幕中間
3: 關(guān)閉Jframe時,程序會停止
5.1.1.?設(shè)置JFrame的寬度和高度
查找API文檔,查看 setSize方法,可以指定框架的寬度和高度.參數(shù)類型是int,注意是以像素為單位,普通的筆記本的屏幕分辨率為1280*800或者1366*768.注意:分辨率表示每平方英寸的像素數(shù).屏幕分辨率越高,屏幕的像素越多.所以分辨率越高看到的細(xì)節(jié)就越多.
setSize方法被定義在java.awt.Component類中,被Component 的子類java.awt.Window 重寫.而Jframe以繼承了Windiws類所以也具備該方法.
5.1.2.?JFrame顯示在屏幕中間
setLocationRelativeTo()方法
setLocationRelativeTo(null)方法可以在屏幕上居中顯示框架.
如果不想要設(shè)置在中間,可以使用
5.1.3.?關(guān)閉JFrame程序停止
setDefaultCloseOperation(int operation)方法
該方法告訴程序,當(dāng)框架關(guān)閉時結(jié)束程序.方法的參數(shù)是JFrame 的常量EXIT_ON_CLOSE
添加完畢
5.2.?框架中添加組件
上述案例中的框架是空的.可以通過add方法在框架中添加組件
代碼:
運(yùn)行程序,會顯示上圖所示窗口.調(diào)整窗口的大小,按鈕都是顯示在窗口的中央,并且占滿整個框架.這是因?yàn)榻M件(本例就是按鈕)是被布局管理器放到框架中的.默認(rèn)布局管理器就是將按鈕放到中央.
備注: 可以通過f.setVisible(false); 隱藏窗體f.dispose();關(guān)閉窗口
設(shè)置圖片:
setIconImage(Toolkit.getDefaultToolkit().createImage("png-0015.png"));
6.?JoptionPane對話框
顯示一個帶有OK 按鈕的模態(tài)對話框。
下面是幾個使用showMessageDialog 的例子:
Java代碼
JOptionPane.showMessageDialog(null, "錯誤信息提示", "標(biāo)題", JOptionPane.INFORMATION_MESSAGE); 效果如下:
Java代碼
1. JOptionPane.showMessageDialog(jPanel, "提示消息", "標(biāo)題",JOptionPane.WARNING_MESSAGE);
效果如下:
Java代碼
1. JOptionPane.showMessageDialog(null, "提示消息.", "標(biāo)題",JOptionPane.ERROR_MESSAGE);
Java代碼
1. JOptionPane.showMessageDialog(null, "提示消息.", "標(biāo)題",JOptionPane.PLAIN_MESSAGE);
1.2 showOptionDialog
這個函數(shù)可以改變顯示在按鈕上的文字宾符。你還可以執(zhí)行更多的個性化操作画恰。
常規(guī)的消息框:
Java代碼
1.?int?n = JOptionPane.showConfirmDialog(null, "你高興嗎?", "標(biāo)題",JOptionPane.YES_NO_OPTION);//i=0/1
效果如下:
輸入框 :
String inputValue = JOptionPane.showInputDialog("請輸入你給我金額");
7.?面板(Panel)
面板也是一個容器的組件,可以在上面添加
注意:面板不能單獨(dú)使用吸奴,必須在頂層窗口中使用允扇。
8.?常見組件
一些常用的組件例如:
JLabel,
JButton ,
JTextField
JPassworldField
JRadioButton
JCheckBox
JTextArea
JList
JMenuBar
JMenu
JMenultem
8.1.?Button按鈕
Java中的Swing提供了常規(guī)按鈕,單選按鈕,復(fù)選按鈕和菜單按鈕
8.1.1.?JButtion普通按鈕
按鈕Button是點(diǎn)擊時觸發(fā)動作事件的組件.
8.1.2.?JRadioButton單選按鈕
單選按鈕,可以讓用戶從一組選項(xiàng)中選擇一個單一條目.例如性別.
使用單選按鈕時注意將,單選按鈕放在一組,需要使用java.swing.ButtonGroup. 的add方法,添加到一個組中,位于同一個組的單選按鈕就是互斥的. 如果沒有將單選按鈕放在一個組中,就是獨(dú)立的..我們讓然需要把按鈕添加在容器中.因?yàn)锽uttonGroup添加到容器中..
8.1.3.?JCheckBox復(fù)選框
多選
8.2.?JLabel標(biāo)簽
8.3.?JTextField文本域
8.4.?JTextArea文本區(qū)域
8.5.?JComboBox組合框
8.6.?JList 列表框
例如: String[] data = { "one", "two", "three" };
JList list =?new?JList(data);
p1.add(list);
8.7.?JmenuBar菜單條
JMenu菜單
JMenultem菜單項(xiàng)
菜單條(MenuBar)中包含菜單(Menu),菜單中中包含菜單項(xiàng)(MenuItem)
注意添加的順序。例如:記事本的菜單條中包含文件则奥、編輯考润、格式、查看读处、幫助菜單糊治。其中文件菜單中包含新建、打開罚舱、保存井辜、另存為等菜單項(xiàng)
案例綜合。
樣式如下:
因?yàn)槊姘迥J(rèn)是流式布局.
小編推薦一個學(xué)Java的學(xué)習(xí)裙【 六五零管闷,五五四粥脚,六零七 】,無論你是大牛還是小白包个,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)刷允!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享碧囊!
9.?布局管理器
Java的GUI組件都放置在容器中,他們的位置是由容器的布局管理器來管理的.在前面的程序中,并沒有指定將OK按鈕放置在框架的什么位置,但是,Java知道應(yīng)該把它放置在哪里,因?yàn)樵诤笈_工作的布局管理器能夠?qū)⒔M件放到正確的位置.布局管理器是使用布局管理器類創(chuàng)建的.
我們可以使用setLayout() 方法在容器中設(shè)置布局管理器.
我們將要了解FlowLayout GridLayout BorderLayout
9.1.?FlowLayout流式布局
FlowLayout(流式布局)是最簡單布局管理器. Jpanel容器默認(rèn)的布局管理器
流式布局,按照組件添加的順序,從左到到右將組件排列在容器中.當(dāng)放滿一行,就開始新的一行.在FlowLayout有3個常量FlowLayout可以指定組件的對齊方式.
LEFT 每一行組件都應(yīng)該是左對齊的
RIGHT 每一行組件都應(yīng)該是右對齊的
CENTER 每一行組件都應(yīng)該是居中的
還可以指定組件之間的以像素為單位的間隔.
這個布局管理器的對其方式默認(rèn)值是CENTER
這個布局管理器的水平間隔默認(rèn)值是 5個像素
這個布局管理器的垂直間隔默認(rèn)是是5個像素
創(chuàng)建該布局管理器
案例:創(chuàng)建框架,使用流失布局管理器.向該框架添加三個標(biāo)簽和文本域.
該案例在本類main方法中創(chuàng)建了一個本類對象. 該類的構(gòu)造函數(shù)中創(chuàng)建并且添加組件.
該案例使用了FlowLayout管理器在框架放置組件.如果改變框架的大小.組建會自動的重新排列,以適應(yīng)框架.
例如:
如果將同一個按鈕在框架中添加10次,那么該框架只會出現(xiàn)一次,將一個按鈕向容器中添加多以和一次是一樣的.
9.2.?GridLayout網(wǎng)格布局
GridLyaout是以網(wǎng)格形式管理組件的.組件按照他們添加的順序從左到右排列,顯示第一行,接著是第二行,一次類推.
Gridlayout可以指定網(wǎng)格中的行數(shù)和列數(shù)
規(guī)則如下:
行數(shù)和列數(shù)可以是0但是不能兩者都為0.
如果一個為0另外一個不為0,那么不為0的行或列的大小就是固定的,為0的行或者列有布局管理器動態(tài)決定.
例如:如果指定一個網(wǎng)格有0行3列10個組件,GirdLayout會創(chuàng)建3個固定的列和行,最后一行只有一個組件.如果指定一個網(wǎng)格有3行0列10個組件,GridLayout就會創(chuàng)建3行4列,最后一行包含2個組件.
如果行數(shù)和列數(shù)都不為0,那么以行數(shù)為依據(jù).所以行數(shù)是固定的,布局管理器會動態(tài)的計算列數(shù).例如,如果指定一個網(wǎng)格有3行3列10個組件,GridLayout會創(chuàng)建3個固定的行和4列,最后一行包含2個組件.
構(gòu)造方法
方法:
案例:該案例依然添加3個標(biāo)簽和3個文本域,只不過布局管理器是GrigLayout
例如:
如果使用setLayout(new GridLayout(3,10))替換setlayout語句,還是會得到3行2列,因?yàn)樾械膮?shù)非零,所以列的參數(shù)會被忽略.列的實(shí)際參數(shù)是由布局管理器計算出來的.
9.3.?BorderLayout邊框布局
邊框布局,JFrame 容器默認(rèn)的布局管理器是邊框布局.該管理器將容器非為東西南北中5個區(qū)域.我們使用add(Component,index)方法可以將組件添加進(jìn)到BorderLayout中,index是一個常量,有5個值
構(gòu)造函數(shù)
方法:
組件會根據(jù)他們最合適的尺寸和在容器中的位置來放置,南北組件可以水平拉伸,東西組件可以垂直拉伸,中央組件既可以水平拉伸也可以垂直拉伸.
案例:演示邊框布局管理器
注意: 如果布局管理器為Border管理器,調(diào)用add方法,沒有說明組件的位置(東西南北中)默認(rèn)是center.
所以
add(new?JButton("ok"))和add(new?JButton("ok"), BorderLayout.CENTER?)
效果是一樣的.
如果在Border容器中添加2個組件,都沒有指定位置,那么只會顯示最后一個組件
add(new?JButton("ok1"))和add(new?JButton("ok2")) 只會顯示ok2
使用布局管理器
代碼:
格式如下:
需求:需要在一個Jframe框架中放置10個按鈕和一個文本域.
要求按鈕以網(wǎng)格形式放置,文本域單獨(dú)一行.
如果將這些組件放在一個單獨(dú)的容器中,很難達(dá)要去的效果.我們使用Java圖形用戶界面進(jìn)行程序設(shè)計時,可以將一個窗口分成幾個面板Jpanel.面板的作用就是分組放置用戶界面的子容器.這里可以將按鈕添加到一個面板中,然后經(jīng)面板添加到框架中.
在Swing中的面板是JPanel 可以使用new Jpanel () 創(chuàng)建一個默認(rèn)是FlowLayout管理器的面板,也可以使用newJPanel(LayoutManager) 創(chuàng)建一個帶特定布局管理器的面板.使用add方法將組件添加進(jìn)面板中.
例如:
圖示:
案例:
該案例中創(chuàng)建了兩個面板(Jpanel) , 面板的默認(rèn)布局是流式布局.,可以使用setLayout 更改面板的布局( setLayout 是java.awt.Container定義的, Jpanel 是Container的子類).
該案例中
面板p1布局指定為GridLayout(網(wǎng)格布局)將12個按鈕,添加進(jìn)面板p1中.
面板p2 布局指定為BorderLayout,將p1面板添加進(jìn)來, p1位于該面板的中部.再添加一個文本域,位于面板p2北部.
將面板p2添加進(jìn)框架(框架布局默認(rèn)為BorderLayout),位于框架的西部,在框架的中部添加一個按鈕.
效果:
注意: 面板容器是一個輕量級的容器树灶,該容器不能單獨(dú)的使用,必須依賴與外層的頂層容器(JFrame)
10.?Java事件監(jiān)聽機(jī)制
在上述的程序中,其中菜單條,菜單項(xiàng)糯而,按鈕等都是對象,當(dāng)我們單擊對象時,應(yīng)該能夠完成一些任務(wù).例如在程序中通過鼠標(biāo)操作時,單擊,雙擊,鼠標(biāo)移入,鼠標(biāo)移出.能夠執(zhí)行一些任務(wù),在Java中我們可以使用事件監(jiān)聽機(jī)制,在Java的事件監(jiān)聽機(jī)制中 ,當(dāng)事件發(fā)生時(點(diǎn)擊按鈕,移動鼠標(biāo)等天通,關(guān)閉窗口)會被一類對象發(fā)現(xiàn)并處理.
10.1.?事件和事件源
在運(yùn)行java圖形用戶界面程序時,用戶與程序交互,用戶執(zhí)行了某些操作時,會發(fā)生一些事情熄驼, 那么事件(event)可以定義為程序發(fā)生了某些事情的信號.典型用戶操作就是用戶移動鼠標(biāo),點(diǎn)擊按鈕,敲擊鍵盤等.程序可以選擇相應(yīng)事件或者忽略事件像寒。
能夠創(chuàng)建一個事件并觸發(fā)該事件的組件稱為源對象。例如由于按鈕能夠點(diǎn)擊, 那么按鈕就是一個源對象,按鈕被點(diǎn)擊就是一個事件谜洽。
一個事件是事件類的實(shí)例對象萝映。事件類的根類是java.util.EventObject。
事件對象包含事件相關(guān)的屬性阐虚,可以使用EventObject類中的實(shí)例方法getSource獲得事件的源對象。
EventObject類的子類可以描述特定類型的事件
例如:
10.2.?監(jiān)聽器
當(dāng)源對象觸發(fā)了一個事件,誰來處理這個事件蚌卤?在Java中對此感興趣的對象會處理它实束。對此感興趣的對象稱之為監(jiān)聽器(Listener)奥秆。
舉例來說當(dāng)我們點(diǎn)擊一個按鈕,想要按鈕執(zhí)行一些動作咸灿,需要一個對象來監(jiān)控按鈕构订,當(dāng)點(diǎn)擊按鈕的事件發(fā)生時,該對象就會監(jiān)聽到按鈕事件避矢。進(jìn)而可以執(zhí)行一些動作悼瘾。
例如:
Java中,對象表示的每個事件都是由java.util中EventObject類的子類,
例如: MouseEvent: 表示鼠標(biāo)的動作,例如移動光標(biāo),單擊,雙擊
KeyEvent: 表示鍵盤上的按鍵.
ActionEvent表示用戶采取的用戶界面操作,例如點(diǎn)擊屏幕上的按鈕.
10.3.?事件處理
Java對組件都有對應(yīng)的事件監(jiān)聽器,和添加事件監(jiān)聽器方法审胸。
例如: 按鈕: 源對象亥宿,會觸發(fā)
體驗(yàn):當(dāng)用戶點(diǎn)擊按鈕時,按鈕上的信息會發(fā)生變化
該案例中:構(gòu)造方法創(chuàng)建了用戶界面砂沛。只有一個JFrame框架和一個按鈕烫扼。
按鈕時事件的源。創(chuàng)建了一個監(jiān)聽器并注冊到了按鈕碍庵。通過匿名內(nèi)部類的形式創(chuàng)建了監(jiān)聽器類
10.4.?窗口事件
Window類
Window 對象是一個頂層窗口映企。窗口(Window)對應(yīng)的事件叫做窗口事件(WindowEvent),任何窗口(Window)以及窗口的子類都可能觸發(fā)窗口事件: 打開窗口静浴,正在關(guān)閉窗口堰氓,激活窗口,變成非活動窗口苹享,最小化窗口和還原窗口豆赏。
Window添加窗口事件(WindowEvent)監(jiān)聽器的方法
監(jiān)聽Window窗口事件(WindowEvent)的監(jiān)聽器:WindowListener
WindowListener接口中定義的方法
案例: 框架的事件監(jiān)聽處理
創(chuàng)建JFrame,Jfame是一個框架富稻,屬于窗體(Window)體系中的一員掷邦,也可以實(shí)現(xiàn)窗口的最大化,最小化椭赋,關(guān)閉抚岗,點(diǎn)擊窗體,等一系列的操作哪怔。那么在用戶觸發(fā)這些事件發(fā)生時能夠做一些工作宣蔚,就需要注冊事件監(jiān)聽器。
JFrame 是通過addWindowListener 方法就注冊窗體事件監(jiān)聽器认境,該方法需要接受一個監(jiān)聽器(WindowListener)對象胚委。查找API文檔,發(fā)現(xiàn)WindowListener是一個接口叉信,
我們需要窗口監(jiān)聽器(WindowListener)的實(shí)例對象亩冬,所以需要實(shí)現(xiàn)該接口,重寫WindowListener接口的抽象方法。然后創(chuàng)建該實(shí)現(xiàn)類對象硅急,作為參數(shù)傳遞給addWindowListener .
例如: 當(dāng)像激活窗口這樣的窗口事件發(fā)生時覆享,windowActivated 方法就會觸發(fā)。
代碼如下:
總結(jié):Window類或者Window類的任何子類都可能會觸發(fā)WindowEvent营袜。因?yàn)镴Frame是Window的子類撒顿。所以也可以觸發(fā)WindowEvent。
10.5.?監(jiān)聽器接口適配器
因?yàn)閃indowListener接口中的方法都是抽象的荚板,所以即使程序中不想關(guān)注某些事件凤壁,但是還是要實(shí)現(xiàn)所以的方法,比較麻煩跪另,為了方便起見拧抖,Java提供了一個針對WindowListener接口的實(shí)現(xiàn)類,該類中把WindowListener接口中的方法全部實(shí)現(xiàn)罚斗,只不過方法體都為空徙鱼。
例如: 加入我們只對激活窗口感興趣,那么只需要繼承該實(shí)現(xiàn)類重寫激活窗口的方法即可针姿。簡化了代碼袱吆。
那么這個WindowAdapter類就叫做適配器類,是為了簡化代碼的書寫而出現(xiàn)的距淫。
10.6.?鼠標(biāo)鍵盤事件
當(dāng)在一個組件上按下绞绒,釋放,點(diǎn)擊榕暇,移動蓬衡,或者拖動鼠標(biāo)時,就會產(chǎn)生鼠標(biāo)事件彤枢。MouseEvent對象捕獲這個事件狰晚。
MouseEvent
Java對鼠標(biāo)事件提供了MouseListener 監(jiān)聽器接口,可以監(jiān)聽鼠標(biāo)的按下缴啡,釋放壁晒,輸入,退出和點(diǎn)擊動作业栅。
MouseListener
用于接收組件上"感興趣"的鼠標(biāo)事件(按下秒咐、釋放、單擊碘裕、進(jìn)入或離開)的偵聽器接口
方法:
按鍵事件可以利用鍵盤來控制和執(zhí)行一些動作携取,如果按下、釋放一個鍵就會觸發(fā)按鍵事件帮孔。KeyEvent對象可以捕獲按鍵的按下放開和敲擊雷滋。KeyEvent提供了getkeyChar 來獲取按鍵對應(yīng)的字符。
Java提供了KeyListener監(jiān)聽器接口來監(jiān)聽按鍵事件。
KeyListener接口
用于接收鍵盤事件(擊鍵)的偵聽器接口惊豺。
案例:
演示鼠標(biāo)事件和鍵盤事件燎孟,當(dāng)在文本域中輸入q 時程序會退出禽作。
10.7.?事件監(jiān)聽機(jī)制小結(jié)
一:確定事件源(容器或組件)
二:注冊監(jiān)聽器
? 通過事件源對象的addXXXListener()方法將監(jiān)聽器對象注冊到該事件源上尸昧。
三:監(jiān)聽器對象
? 注冊監(jiān)聽器時,需要指定監(jiān)聽器對象旷偿。
以參數(shù)的形式進(jìn)監(jiān)聽器對象傳遞給addXXXListener()
監(jiān)聽器對象是XXXListener的子類對象或者XXXAdapter的子類對象烹俗。
?監(jiān)聽器對象一般用匿名內(nèi)部類來表示。(簡化書寫)
?在覆蓋方法的時候萍程,方法的參數(shù)一般是XXXEvent類型的變量接收幢妄。
? 事件觸發(fā)后會把事件打包成對象傳遞給該變量。(其中包括事件源對象茫负。通過getSource()或者getComponent()獲取蕉鸳。)
四:常見的事件監(jiān)聽器
WindowListener 主要用于監(jiān)聽窗口
ActionListener 主要用于用監(jiān)聽組件對象的單擊動作
MouseListener 鼠標(biāo)監(jiān)聽器
KeyListener 監(jiān)聽鍵盤
…….
五:常見的事件適配器
WindowAdapter
MouseAdapter
KeyAdapter
11.?作業(yè)
完成如下圖像程序,在文本框中輸入路徑忍法,顯示該路徑下的子文件和子目錄潮尝。
小編推薦一個學(xué)Java的學(xué)習(xí)裙【 六五零,五五四饿序,六零七 】勉失,無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)原探!裙內(nèi)有開發(fā)工具乱凿,很多干貨和技術(shù)資料分享!
設(shè)計簡單的記事本程序咽弦。