Java編程學(xué)習(xí)桌面(GUI)編程自學(xué)筆記

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è)計簡單的記事本程序咽弦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末徒蟆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子型型,更是在濱河造成了極大的恐慌段审,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件输莺,死亡現(xiàn)場離奇詭異戚哎,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)嫂用,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進(jìn)店門型凳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嘱函,你說我怎么就攤上這事甘畅。” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵疏唾,是天一觀的道長蓄氧。 經(jīng)常有香客問我,道長槐脏,這世上最難降的妖魔是什么喉童? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮顿天,結(jié)果婚禮上堂氯,老公的妹妹穿的比我還像新娘。我一直安慰自己牌废,他們只是感情好咽白,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鸟缕,像睡著了一般晶框。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上懂从,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天授段,我揣著相機(jī)與錄音,去河邊找鬼莫绣。 笑死畴蒲,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的对室。 我是一名探鬼主播模燥,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼掩宜!你這毒婦竟也來了蔫骂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤牺汤,失蹤者是張志新(化名)和其女友劉穎辽旋,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體檐迟,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡补胚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了追迟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溶其。...
    茶點(diǎn)故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖敦间,靈堂內(nèi)的尸體忽然破棺而出瓶逃,到底是詐尸還是另有隱情束铭,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布厢绝,位于F島的核電站契沫,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏昔汉。R本人自食惡果不足惜懈万,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望挤庇。 院中可真熱鬧钞速,春花似錦贷掖、人聲如沸嫡秕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽昆咽。三九已至,卻和暖如春牙甫,著一層夾襖步出監(jiān)牢的瞬間掷酗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工窟哺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留泻轰,地道東北人。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓且轨,卻偏偏與公主長得像浮声,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子旋奢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容