




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第第6章回顧章回顧 appletjava applet也稱為小應(yīng)用程序,嵌入在網(wǎng)頁中運行 applet方法方法 init( ) -完成對applet實例的初始化 repaint()-update(g)-paint(g) drawstring(string s, int x, int y)drawline(int x1, int y1, int x2, int y2) drawimage(4個參數(shù))如何從html文件將參數(shù)傳遞給applet?第第7章章 圖形用戶界面的設(shè)計與實現(xiàn)圖形用戶界面的設(shè)計與實現(xiàn)7.1 圖形用戶界面核心概念圖形用戶界面核心概念7.2 容器與布局管理容器與布局管理7.3 常用
2、常用gui標準組件標準組件7.4 鼠標和鍵盤事件鼠標和鍵盤事件7.5 菜單的使用菜單的使用7.6 對話框的使用對話框的使用圖形用戶界面核心概念圖形用戶界面核心概念 容器容器-可以容納可以容納gui部件(按某種布局)部件(按某種布局) -窗體窗體 、面板、面板 部件部件-部署在容器中,實現(xiàn)某種交互。部署在容器中,實現(xiàn)某種交互。 -文本框、按紐、標簽等文本框、按紐、標簽等gui部件部件 圖形用戶界面核心概念圖形用戶界面核心概念-創(chuàng)建窗體創(chuàng)建窗體frame f=new frame(“標題標題“)class myframe extends frame . frame f=new myframe(“標題
3、標題“)圖形用戶界面核心概念圖形用戶界面核心概念 創(chuàng)建文本框、按鈕、標簽創(chuàng)建文本框、按鈕、標簽 textfield x=new textfield(10); button b=new button(“ok”); label dis=new label(“hint”);圖形用戶界面核心概念圖形用戶界面核心概念 給容器中加入部件給容器中加入部件 布局設(shè)置布局設(shè)置setlayout(new flowlayout() 加入部件加入部件 add(部件對象部件對象1);); add(部件對象部件對象2);); .圖形用戶界面核心概念圖形用戶界面核心概念事件處理事件處理 -委托事件處理模型委托事件處理模型
4、事件源事件源-發(fā)生事件發(fā)生事件 事件監(jiān)聽者事件監(jiān)聽者-處理事件處理事件 -符合相應(yīng)接口要求符合相應(yīng)接口要求事件委托處理事件委托處理圖圖委托事件處理委托事件處理-過程過程(1)給事件源對象注冊監(jiān)聽者)給事件源對象注冊監(jiān)聽者 button.addactionlistener(actionlistener a); (2)給監(jiān)聽者編寫事件處理代碼)給監(jiān)聽者編寫事件處理代碼 public void actionperformed(actionevent e) (1)事件源對象的容器類作為監(jiān)聽者)事件源對象的容器類作為監(jiān)聽者 addactionlistener(this); (2)用內(nèi)嵌類實現(xiàn))用內(nèi)嵌類實
5、現(xiàn) addactionlistener(new process();監(jiān)聽者事件處理編程監(jiān)聽者事件處理編程 -要設(shè)法在要設(shè)法在actionperformed中能訪問事件處理相關(guān)對象中能訪問事件處理相關(guān)對象(3)用匿名內(nèi)嵌類實現(xiàn))用匿名內(nèi)嵌類實現(xiàn) addactionlistener(new actionlistener() . );圖形用戶界面核心概念圖形用戶界面核心概念 getsource() 用來獲取事件源對象。用來獲取事件源對象。 getactioncommand() 結(jié)果為字符串,用來獲取按鈕事件對象的命令名結(jié)果為字符串,用來獲取按鈕事件對象的命令名 在事件處理代碼中區(qū)分事件源在事件處理代
6、碼中區(qū)分事件源 -actionevent提供方法提供方法演練例子演練例子 編寫一個程序改變編寫一個程序改變applet背景的顏色背景的顏色 在在applet中安排一個按鈕,每次點擊按鈕隨機換中安排一個按鈕,每次點擊按鈕隨機換一種新顏色。一種新顏色。布局管理布局管理 flowlayout(流式布局流式布局) borderlayout(邊緣或方位布局邊緣或方位布局) gridlayout(網(wǎng)格布局網(wǎng)格布局) cardlayout(卡片式布局卡片式布局) gridbaglayout(網(wǎng)格塊布局網(wǎng)格塊布局) 布局管理布局管理-flowlayout(流式布局流式布局) 從上到下、左到右排放,放不下再換至
7、下一行從上到下、左到右排放,放不下再換至下一行 -不會改變控件的大小。不會改變控件的大小。 按照參數(shù)要求安排部件間的縱橫間隔縱橫間隔和對齊方式對齊方式 public flowlayout() 居中對齊方式,組件縱橫間隔5個像素。 public flowlayout(int align, int hgap, int vgap) 3個參數(shù)分別指定對齊方式、縱、橫間距 public flowlayout(int align) 參數(shù)規(guī)定對齊方式對齊方式,組件縱橫間距縱橫間距默認5個像素。布局管理布局管理-borderlayout(邊緣或方位布局邊緣或方位布局) 將容器內(nèi)部空間分為東(將容器內(nèi)部空間分為
8、東(east)、南()、南(south)、西)、西(west)、北()、北(north)、中()、中(center)五個區(qū)域)五個區(qū)域 布局管理布局管理-borderlayout(邊緣或方位布局邊緣或方位布局) 控件的大小隨容器大小改變。控件的大小隨容器大小改變。 按照參數(shù)要求安排部件間的縱橫間隔縱橫間隔和對齊方式對齊方式 public borderlayout()() 各組件之間的縱橫間距為各組件之間的縱橫間距為0 public borderlayout(int hgap, int vgap) 2個參數(shù)分別指定縱、橫間距個參數(shù)分別指定縱、橫間距 加入組件加入組件add(方位名字符串方位名字符
9、串, 組件組件) 布局管理布局管理-gridlayout布局布局 把容器的空間分為若干行乘若干列的網(wǎng)格區(qū)域 組件按從左向右,從上到下的次序被加到各單元格中 組件的大小將調(diào)整為與單元格大小相同。布局管理布局管理-gridlayout構(gòu)造方法構(gòu)造方法 public gridlayout() 所有組件在一行中。 public gridlayout(int rows,int cols) 通過參數(shù)指定布局的行和列數(shù)。 public gridlayout(int rows,int cols,int hgaps,int vgaps) 指定劃分的行列數(shù)以及組件間的水平和垂直間距。 gridlayout布局布局
10、加入組件加入組件 add(組件名組件名) public void init() this.setlayout(new gridlayout(3, 3, 10, 10); for (int i = 1; i = 9; i+) this.add(new button(button # + i); 布局管理布局管理-cardlayout布局布局 加入的部件疊成卡片的形式 構(gòu)造方法構(gòu)造方法 public cardlayout() 顯示組件將占滿整個容器,不留邊界不留邊界。 public cardlayout(int hgap,int vgap) 容器邊界分別留出水平和垂直間隔,組件占中央。 組件加入組
11、件加入 add(字符串字符串, 組件名組件名)其中,字符串用來標識卡片名稱。cardlayout布局布局-卡片翻動卡片翻動 show(容器容器,字符串字符串):顯示指定名稱的卡片:顯示指定名稱的卡片 first(容器容器) :顯示第一塊卡片:顯示第一塊卡片 last(容器容器) :顯示最后一塊卡片:顯示最后一塊卡片 next(容器容器) :顯示下一塊卡片:顯示下一塊卡片 component類類(抽象類)抽象類) color getbackground() : 獲取部件的背景色獲取部件的背景色 font getfont() : 獲取部件的顯示字體獲取部件的顯示字體 graphics getgra
12、phics(): 獲取部件的獲取部件的graphics屬性對象屬性對象 void repaint(int x,int y,int width,int height) : 對部件的特定對部件的特定區(qū)域進行重新繪圖區(qū)域進行重新繪圖 void setbackground(color c) : 設(shè)置部件的背景設(shè)置部件的背景 void setenabled(boolean b) : 是否讓部件功能有效,在無是否讓部件功能有效,在無效情況下部件變灰效情況下部件變灰 void setfont(font f) : 設(shè)置部件的顯示字體設(shè)置部件的顯示字體 void setsize(int width,int he
13、ight) : 設(shè)置部件的大小設(shè)置部件的大小 void setvisible(boolean b) : 設(shè)置部件是否可見設(shè)置部件是否可見 void setforeground(color c) : 設(shè)置部件的前景色設(shè)置部件的前景色 void requestfocus() : 讓部件得到焦點讓部件得到焦點 void add(popupmenu popup) :給部件加入彈出菜單:給部件加入彈出菜單 文本框文本框(textfield)文本框只能編輯一行數(shù)據(jù)文本框只能編輯一行數(shù)據(jù)構(gòu)造方法有四種構(gòu)造方法有四種: textfield():構(gòu)造一個單行文本輸入框。:構(gòu)造一個單行文本輸入框。 textfie
14、ld(int):指定長度的單行文本輸入框。:指定長度的單行文本輸入框。 textfield(string):指定初始內(nèi)容的單行文本輸入框。:指定初始內(nèi)容的單行文本輸入框。 textfield(string, int):指定長度、指定初始內(nèi)容。:指定長度、指定初始內(nèi)容。 常用方法常用方法: setechochar(*) 設(shè)置回顯字符設(shè)置回顯字符 gettext() :獲取輸入框中的數(shù)據(jù):獲取輸入框中的數(shù)據(jù) settext() :往輸入框?qū)懭霐?shù)據(jù):往輸入框?qū)懭霐?shù)據(jù) iseditable():判斷輸入框是否可編輯。:判斷輸入框是否可編輯。文本框文本框(textfield)-事件事件actioneve
15、nt事件事件-在文本框按回車鍵時引發(fā)在文本框按回車鍵時引發(fā) 注冊:addactionlistener(); 接口:actionlistener 方法: public void actionperformed(actionevent e) textevent事件事件-對文本輸入部件數(shù)據(jù)更改操作對文本輸入部件數(shù)據(jù)更改操作 (添加、修改、刪除)(添加、修改、刪除)注冊:注冊: addtextlistener()()接口:接口:textlistener方法:方法: public void textvaluechanged(textevent e) 文本域文本域(textarea)特點特點1:可以編輯多
16、行文字:可以編輯多行文字 構(gòu)造方法有四種構(gòu)造方法有四種: textarea():構(gòu)造一個文本域。 textarea(int, int):構(gòu)造一個指定長度和寬度的文本域。 textarea(string):構(gòu)造一個顯示指定文字的文本域。 textarea(string, int, int):按指定長度、寬度和默認值構(gòu)造多行文本域。 特點特點2:在已有內(nèi)容的基礎(chǔ)上補充新數(shù)據(jù):在已有內(nèi)容的基礎(chǔ)上補充新數(shù)據(jù)append(string s):將字符串添加到文本域的末尾 insert(string s,int index):將字符串插入到文本域的指定位置 1. 選擇事件選擇事件 (itemevent)類類
17、 public itemselectable getitemselectable() public object getitem() public int getstatechange() 返回值: itemevent.selected : 代表選項被選中。代表選項被選中。 itemevent.deselected :代表選項被放棄不選。:代表選項被放棄不選。2復(fù)選按鈕復(fù)選按鈕 (checkbox) 舉例舉例 : checkbox backg = new checkbox(背景色背景色 ); 常用方法常用方法 boolean getstate() : 獲取復(fù)選按鈕的選中狀態(tài),返回獲取復(fù)選按鈕的
18、選中狀態(tài),返回true代表按鈕被選中代表按鈕被選中 void setstate(boolean value) :設(shè)置復(fù)選按鈕的狀態(tài),:設(shè)置復(fù)選按鈕的狀態(tài),vlaue為為true表示選中。表示選中。 事件響應(yīng)事件響應(yīng) itemstatechanged(itemevent e)方法方法 通過通過 e.getitemselectable()獲得事件源對象引用獲得事件源對象引用 調(diào)用調(diào)用 getstate()獲取事件獲取事件 源對象的狀態(tài)。源對象的狀態(tài)。例例7-11 一個簡單的多選題練習(xí)程序一個簡單的多選題練習(xí)程序例例7-11 一個簡單的多選題練習(xí)程序一個簡單的多選題練習(xí)程序 import java.
19、awt .*; import java.applet .*; import java.awt.event.* ; public class fuxuan extends applet implements actionlistener string question=java test question1n a. choice1n b.choice2n c.choice3 ,java test question2n a. goodn b. badn c. luck; string ch=a,b,c; string answer=ab,bc; checkbox cb=new checkbox3;
20、 label hint; textarea content; int bh=0; button ok,next, previous; public void init() setlayout(new borderlayout(); content =new textarea(10,50); add(center,content); content.settext(questionbh); panel p=new panel(); p.setlayout(new gridlayout(2,1); panel p1=new panel(); for (int i=0;ich.length;i+ )
21、 cbi = new checkbox(chi); p1.add(cbi); p.add(p1); panel p2=new panel(); ok=new button( 確定確定 ); p2.add(ok); hint=new label( 對錯提示對錯提示); p2.add(hint); next=new button( 下一題下一題 ); p2.add(next); previous=new button( 上一題上一題 ); p2.add(previous); p.add(p2); add(south,p); next.addactionlistener(this); previou
22、s.addactionlistener(this); ok.addactionlistener(this); public void actionperformed(actionevent e) if (e.getsource()=ok) string s=; for (int i=0;ich.length;i+ ) if (cbi.getstate() s=s+cbi.getlabel(); if (s.equals(answerbh) hint.settext(對對); else hint.settext(錯錯); 例例7-11(續(xù)續(xù)4)解答判定)解答判定 else if (e.getso
23、urce()=next) if (bh0) bh-; content.settext(questionbh); 例例7-11(續(xù)續(xù)5)/翻動試題翻動試題3. 單選按鈕單選按鈕(checkboxgroup) 使用復(fù)選框組,可以實現(xiàn)單選框的功能。例如:使用復(fù)選框組,可以實現(xiàn)單選框的功能。例如: checkboxgroup style = new checkboxgroup() ; checkbox p = new checkbox(普通普通 , true, style); checkbox b = new checkbox(黑體黑體 , false, style); checkbox i = ne
24、w checkbox(斜體斜體 , false, style);【注意】把【注意】把checkboxgroup加入容器時必須將每個加入容器時必須將每個checkbox對象逐一加入容器,不能使用對象逐一加入容器,不能使用checkboxgroup對象一次性加入。對象一次性加入。 將按鈕組合將按鈕組合事件編程處理事件編程處理 每個單選按鈕要單獨注冊監(jiān)聽者每個單選按鈕要單獨注冊監(jiān)聽者 在事件處理代碼中通過在事件處理代碼中通過checkboxgroup的對象的的對象的getselectcheckbox()方法可獲取當前被選中的選項方法可獲取當前被選中的選項按鈕對象,要設(shè)置選項按鈕按鈕對象,要設(shè)置選項按
25、鈕i為選中狀態(tài)可通過方為選中狀態(tài)可通過方法法setselectedcheckbox(i)。選項按鈕的其他方法:選項按鈕的其他方法: getlabel()方法可獲取選項按鈕的標識方法可獲取選項按鈕的標識 getstate()可判選項按鈕對象是否選中??膳羞x項按鈕對象是否選中。 setstate()設(shè)置某個單選按鈕為選中狀態(tài)。設(shè)置某個單選按鈕為選中狀態(tài)。 例例7-12 用單選按鈕控制畫筆的顏色用單選按鈕控制畫筆的顏色 import java.awt .*; import java.applet .*; import java.awt.event.* ; public class changecol
26、or extends applet implements itemlistener string des=紅色紅色,蘭色蘭色,綠色綠色,白色白色,灰色灰色; color c=color.red,color.blue,color.green ,color.white,color.gray; color drawcolor=color.black; public void init() checkboxgroup style = new checkboxgroup(); for (int i=0;ides.length;i+ ) checkbox one=new checkbox(desi,fal
27、se,style); one.additemlistener(this); add(one); /* 根據(jù)根據(jù)drawcolor的顏色繪制文字的顏色繪制文字 */ public void paint(graphics g) g.setcolor(drawcolor); g.setfont(new font(變色字變色字, font.bold,24); g.drawstring(變色字變色字,80,80); 根據(jù)選擇的按鈕設(shè)置根據(jù)選擇的按鈕設(shè)置drawcolor的顏色值的顏色值public void itemstatechanged(itemevent e) checkbox temp=(che
28、ckbox)e.getitemselectable(); for (int i=0;ides.length ; i+) if (temp.getlabel()=desi) drawcolor=ci; repaint(); break; 4下拉列表下拉列表(choice) “多選一多選一”控件控件 下拉列表是作為一個整體加入到容器,各個列表下拉列表是作為一個整體加入到容器,各個列表元素不是獨立的操作對象。元素不是獨立的操作對象。 下拉列表也是產(chǎn)生下拉列表也是產(chǎn)生itemevent類的選擇事件類的選擇事件 對下拉列表的選項值的判定處理有兩種方法可供對下拉列表的選項值的判定處理有兩種方法可供選擇:一
29、種是根據(jù)選項在列表中的序號,即通過選擇:一種是根據(jù)選項在列表中的序號,即通過getselectedindex()方法;另一種是通過方法;另一種是通過getselectitem()方法獲取列表項對應(yīng)的字符串方法獲取列表項對應(yīng)的字符串 。相關(guān)方法:相關(guān)方法: select(int index)和和select(string item):強制將某列表:強制將某列表項定為選中狀態(tài);項定為選中狀態(tài); add(string item) 和和insert(string item,int index):添:添加新元素到列表中加新元素到列表中 remove(int index)和和 remove(string
30、item):刪除某個:刪除某個列表元素列表元素 removeall():刪除所有元素。:刪除所有元素。例例7-13 用下拉列表控制用下拉列表控制applet的背景變化的背景變化 import java.awt .*; import java.applet .*; import java.awt.event.* ; public class changecolor2 extends applet implements itemlistener string des=紅色紅色,蘭色蘭色,綠色綠色,白色白色,灰色灰色; color c=color.red,color.blue,color.green
31、,color.white,color.gray; public void init() choice color = new choice(); for (int i=0;ides.length;i+ ) color.add(desi); color.additemlistener(this); add(color); 例例7-13(續(xù))續(xù))public void itemstatechanged(itemevent e) choice temp=(choice)e.getitemselectable(); for (int i=0;ides.length ; i+) if (temp.get
32、selectedindex()=i) setbackground(ci); break; 5. 列表(列表(list) 列表與下拉列表的區(qū)別有兩點:列表與下拉列表的區(qū)別有兩點: 一是列表可以在屏幕上看到一定數(shù)目的選擇項,一是列表可以在屏幕上看到一定數(shù)目的選擇項,而下拉列表只能看到一項;而下拉列表只能看到一項; 另一點用戶可能允另一點用戶可能允許同時選擇列表中的多項,而下拉列表只能選一許同時選擇列表中的多項,而下拉列表只能選一項。項。 mylist = new list(4, true); 給列表添加選項用給列表添加選項用add方法方法 下拉列表的方法均可用于列表對象,另外,由于下拉列表的方法均
33、可用于列表對象,另外,由于列表支持多選,因此,列表中還提供有列表支持多選,因此,列表中還提供有g(shù)etselectitems()方法和方法和getselectedindexs()方法方法,它它們返回的均是數(shù)組,分別代表哪些選中的選項的們返回的均是數(shù)組,分別代表哪些選中的選項的字符串和序號。字符串和序號。 列表可以產(chǎn)生兩類事件:列表可以產(chǎn)生兩類事件: itemevent類選擇事件,當單擊某選項時觸發(fā)。類選擇事件,當單擊某選項時觸發(fā)。 actionevent類動作事件。當雙擊某選項觸發(fā)。類動作事件。當雙擊某選項觸發(fā)。 值得注意的是,雙擊事件不能覆蓋單擊事件,當值得注意的是,雙擊事件不能覆蓋單擊事件,
34、當用戶雙擊一個選項時,首先產(chǎn)生雙擊、然后產(chǎn)生用戶雙擊一個選項時,首先產(chǎn)生雙擊、然后產(chǎn)生單擊。單擊。例例7-14 假設(shè)有一個發(fā)文系統(tǒng),需要假設(shè)有一個發(fā)文系統(tǒng),需要將一份文件發(fā)給多個單位將一份文件發(fā)給多個單位 import java.applet.*; import java.awt.*; import java.awt.event.*; public class testlist extends applet implements actionlistener,itemlistener list mylist; label result; string unit=總務(wù)處總務(wù)處,教務(wù)處教務(wù)處,工會
35、工會,科研處科研處,信息學(xué)院信息學(xué)院,機械學(xué)院機械學(xué)院; public void init() mylist = new list(5,true); for (int i=0;iunit.length;i+) mylist.add(uniti); add(mylist); mylist.addactionlistener(this); mylist.additemlistener(this); /* 響應(yīng)動作事件響應(yīng)動作事件*/ public void actionperformed(actionevent e) if(e.getsource()=mylist) showstatus(您雙擊了
36、選項您雙擊了選項+e.getactioncommand(); /* 響應(yīng)選擇事件響應(yīng)選擇事件*/ public void itemstatechanged(itemevent e) string slist; string str = ; list temp = (list)(e.getitemselectable(); slist = temp . getselecteditems() ; for(int i=0;islist.length;i+) str = str + slisti + ; showstatus(您選擇了選項:您選擇了選項:+str); 1、創(chuàng)建滾動條、創(chuàng)建滾動條 滾動條
37、按方向分垂直和水平兩種。例如,以下代滾動條按方向分垂直和水平兩種。例如,以下代碼創(chuàng)建一個水平滾動條碼創(chuàng)建一個水平滾動條: scrollbar myslider = new scrollbar(scrollbar.horizontal,0,1,0,255); 有關(guān)說明:有關(guān)說明: (1)第)第1個參數(shù)為常量,代表水平滾動條,如果是個參數(shù)為常量,代表水平滾動條,如果是垂直滾動條,則為垂直滾動條,則為scrollbar.vertical; (2)第)第2個參數(shù)代表為初始值;個參數(shù)代表為初始值; (3)第)第3個參數(shù)代表滾動條的滑塊長度;個參數(shù)代表滾動條的滑塊長度; (4)第)第4、5個參數(shù)分別代表滾
38、動條的最小和最大值,個參數(shù)分別代表滾動條的最小和最大值,由于滾動條滑塊要占一定寬度,所以滾動條的實由于滾動條滑塊要占一定寬度,所以滾動條的實際最大值際最大值=最大值最大值-滑塊長度?;瑝K長度。 2、滾動條的事件處理、滾動條的事件處理 adjustmentevent(調(diào)整值變化事件調(diào)整值變化事件)是在滾動條滑是在滾動條滑塊移動時引發(fā)。在滾動條上可通過多種操作來改塊移動時引發(fā)。在滾動條上可通過多種操作來改變其滑塊位置,例如:用戶可以拖動滾動條的滑變其滑塊位置,例如:用戶可以拖動滾動條的滑塊,點擊塊增量區(qū)或上、下三角按鈕均會導(dǎo)致滑塊,點擊塊增量區(qū)或上、下三角按鈕均會導(dǎo)致滑塊的變化,而且移動的步長不同
39、,按塊的變化,而且移動的步長不同,按page up和和page down鍵也相當于點擊滾動條的塊增量區(qū)鍵也相當于點擊滾動條的塊增量區(qū) 使用使用addadjustmentlistener()方法給滾動條注()方法給滾動條注冊監(jiān)聽者,監(jiān)聽者要求實現(xiàn)冊監(jiān)聽者,監(jiān)聽者要求實現(xiàn)adjustmentlistener接口,該接口中包含如下方法:接口,該接口中包含如下方法: public void adjustmentvaluechanged(adjustmentevent e) 滾動條編程的要點是對滾動條所代表的值的獲取與滾動條編程的要點是對滾動條所代表的值的獲取與設(shè)置,如下方法分別用來獲取和設(shè)置滾動條的當
40、前設(shè)置,如下方法分別用來獲取和設(shè)置滾動條的當前值:值: public int getvalue() public void setvalue(int newvalue) 如下方法獲取事件源和引起值變化的調(diào)整類型:如下方法獲取事件源和引起值變化的調(diào)整類型: adjustable getadjustable() 返回引發(fā)狀態(tài)變化的事件源對象。返回引發(fā)狀態(tài)變化的事件源對象。 int getadjustmenttype() 返回引發(fā)狀態(tài)變化事件的調(diào)整類型返回引發(fā)狀態(tài)變化事件的調(diào)整類型調(diào)整類型值可通過以下常量進行判斷。調(diào)整類型值可通過以下常量進行判斷。 adjustmentevent.block_dec
41、rement 點擊點擊下方引取下移下方引取下移 adjustmentevent.block_increment 上移上移 adjustmentevent.track 拖動滑塊拖動滑塊 adjustmentevent.unit_decrement 點擊下點擊下三角按鈕三角按鈕 adjustmentevent.unit_increment 點了上點了上三角按鈕三角按鈕 設(shè)定和獲取滾動條滑塊的移動增量值設(shè)定和獲取滾動條滑塊的移動增量值 void setunitincrement(int) /指定單位增量指定單位增量 void setblockincrement(int) /指定塊增量指定塊增量 in
42、t getunitincrement() /獲取單位增量獲取單位增量 int getblockincrement() /獲取塊增量獲取塊增量 例例7-15 利用滾動條設(shè)計一個調(diào)色控制板用來利用滾動條設(shè)計一個調(diào)色控制板用來調(diào)整任意部件的顏色調(diào)整任意部件的顏色 import java.applet.*; import java.awt.*; import java.awt.event.*; class colorbar extends scrollbar public colorbar() super(scrollbar.horizontal,0,40,0,295); this.setunitin
43、crement(1); this.setblockincrement(50); class colorpanel extends panel implements adjustmentlistener scrollbar redslider = new colorbar(); scrollbar greenslider = new colorbar(); scrollbar blueslider = new colorbar(); canvas mycanvas = new canvas(); color color; public colorpanel() panel x=new panel
44、(); x.setlayout(new gridlayout(3,2,1,1); x.add(new label(red); x.add(redslider); x.add(new label(green); x.add(greenslider); x.add(new label(blue); x.add(blueslider); setlayout(new gridlayout(2,1,5,5); add(mycanvas); add(x); redslider.addadjustmentlistener(this); greenslider.addadjustmentlistener(th
45、is); blueslider.addadjustmentlistener(this); /* 滾動條調(diào)整時,根據(jù)調(diào)整值改變畫布的顏色滾動條調(diào)整時,根據(jù)調(diào)整值改變畫布的顏色 */ public void adjustmentvaluechanged(adjustmentevent e) int value1,value2,value3; value1 = redslider.getvalue(); value2 = greenslider.getvalue(); value3 = blueslider.getvalue(); color= new color(value1,value2,val
46、ue3); mycanvas.setbackground(color); public class testslider extends applet public void init() setlayout(new borderlayout(); add(center,new colorpanel(); 鼠標事件鼠標事件 共有共有7種情形種情形,用用 mouseevent類的同名靜態(tài)類的同名靜態(tài)整型常量標志整型常量標志, 分別是分別是 mouse_dragged mouse_entered mouse_exited mouse_moved mouse_pressed mouse_releas
47、ed mouse_clicked鼠標事件的處理接口鼠標事件的處理接口 mouselistener 負責(zé)接收和處理鼠標的負責(zé)接收和處理鼠標的press(按下按下)、release(釋(釋放)、放)、click(點擊)、(點擊)、enter(移入)和(移入)和exit(移(移出)動作觸發(fā)的事件;出)動作觸發(fā)的事件; mousemotionlistener 負責(zé)接收和處理鼠標的負責(zé)接收和處理鼠標的move(移動移動)和和drag(拖動拖動)動動作觸發(fā)的事件。作觸發(fā)的事件。 mouseevent類類public int getx() :返回發(fā)生鼠標事件的:返回發(fā)生鼠標事件的 x坐標。坐標。 publi
48、c int gety() :返回發(fā)生鼠標事件的:返回發(fā)生鼠標事件的 y坐標。坐標。 public point getpoint() :返回:返回 point對象對象,也即鼠標事件也即鼠標事件發(fā)生的坐標點。發(fā)生的坐標點。 public int getclickcount() :返回鼠標點擊事件的連擊:返回鼠標點擊事件的連擊次數(shù)。次數(shù)。 一個鼠標位置跟蹤程序,在當前位置畫一個鼠標位置跟蹤程序,在當前位置畫紅色小圓紅色小圓 import java.applet.applet;import java.awt.*;import java.awt.event.*;public class extends
49、applet implements mousemotionlistener private static final int radius = 7; private int posx=10,posy=10; public void init() addmousemotionlistener (this); public void paint(graphics g) /在鼠標位置畫紅色小圓在鼠標位置畫紅色小圓 g.setcolor(color.red); g.filloval(posx-radius, posy-radius, radius * 2, radius * 2); 一個鼠標位置跟蹤程
50、序,在當前位置畫一個鼠標位置跟蹤程序,在當前位置畫紅色小圓紅色小圓 (續(xù)續(xù)1)/* 對鼠標移動事件進行處理對鼠標移動事件進行處理*/ public void mousemoved(mouseevent event) posx = event.getx(); posy = event.gety(); repaint(); public void mousedragged(mouseevent event) 一個鼠標位置跟蹤程序,在當前位置畫一個鼠標位置跟蹤程序,在當前位置畫紅色小圓紅色小圓 (續(xù)續(xù)2)學(xué)生練習(xí)學(xué)生練習(xí) 編編applet在鼠標所到之處繪線在鼠標所到之處繪線 。鍵盤事件鍵盤事件 包含
51、包含 3個個,分別對應(yīng)分別對應(yīng) keyevent類的幾個同名的靜態(tài)整類的幾個同名的靜態(tài)整型常量型常量key_pressed、 key_released、key_typed。 監(jiān)聽者接口是監(jiān)聽者接口是keylistener public void keypressed(keyevent e) 某個鍵按下時執(zhí)行。某個鍵按下時執(zhí)行。 public void keyreleased(keyevent e) 某鍵被釋放時執(zhí)行。某鍵被釋放時執(zhí)行。 public void keytyped(keyevent e) 按鍵被敲擊。按鍵被敲擊。 keytyped包含包含keypressed和和keyrelased
52、兩個動作兩個動作如何獲取擊鍵值如何獲取擊鍵值 getkeychar()-獲取輸入字符(對字符鍵)獲取輸入字符(對字符鍵) getkeycode()-獲取鍵的編碼(對控制鍵)獲取鍵的編碼(對控制鍵) 鍵編碼常量鍵編碼常量 keyevent.vk_left) -按鍵為左箭頭按鍵為左箭頭 keyevent.vk_right) -右箭頭右箭頭 keyevent.vk_up) - 向上箭頭向上箭頭 keyevent.vk_down) -向下箭頭向下箭頭小方框變色和移動小方框變色和移動 import java.awt.*; import java.awt.event.*;import java.apple
53、t.applet;public class keyboarddemo extends applet implements keylistener static final int square_size = 20; color squarecolor; int squaretop, squareleft; public void init() setbackground(color.white); squaretop = getsize().height / 2 - square_size / 2; squareleft = getsize().width / 2 - square_size
54、/ 2; squarecolor = color.red; addkeylistener(this); public void paint(graphics g) g.setcolor(color.cyan); int width = getsize().width; int height = getsize().height; g.drawrect(0,0,width-1,height-1); g.drawrect(1,1,width-3,height-3); g.drawrect(2,2,width-5,height-5); g.setcolor(squarecolor); g.fillr
55、ect(squareleft, squaretop, square_size, square_size); public void keytyped(keyevent evt) char ch = evt.getkeychar(); if (ch = b | ch = b) squarecolor = color.blue; repaint(); else if (ch = g | ch = g) squarecolor = color.green; repaint(); else if (ch = r | ch = r) squarecolor = color.red; repaint();
56、 else if (ch = k | ch = k) squarecolor = color.black; repaint(); public void keypressed(keyevent evt) int key = evt.getkeycode(); if (key = keyevent.vk_left) squareleft -= 8; if (squareleft getsize().width - 3 - square_size) squareleft = getsize().width - 3 - square_size; repaint(); else if (key = k
57、eyevent.vk_up) squaretop -= 8; if (squaretop getsize().height - 3 - square_size) squaretop = getsize().height - 3 - square_size; repaint(); public void keyreleased(keyevent evt) 課堂練習(xí)課堂練習(xí) 編編applet程序在標簽中顯示輸入按鍵的編碼值。程序在標簽中顯示輸入按鍵的編碼值。 1.菜單編程的基本步驟菜單編程的基本步驟 創(chuàng)建菜單條(創(chuàng)建菜單條(menubar) 例:例:menubar m_menubar = new
58、menubar(); /創(chuàng)創(chuàng)建一個空的菜單條建一個空的菜單條menubar 創(chuàng)建不同的菜單項(創(chuàng)建不同的菜單項(menu)并加入到菜單條中)并加入到菜單條中 例:例: menu menuedit = new menu(編輯編輯); m_menubar.add(menuedit); 創(chuàng)建菜單子項(創(chuàng)建菜單子項(menuitem)加入菜單項)加入菜單項例:例:menuitem mi_edit_copy = new menuitem(復(fù)復(fù)制制); menuedit.add(mi_edit-copy); 使用使用menu的的addseparator()方法可以在各菜單項之方法可以在各菜單項之間可以加入
59、分隔線。間可以加入分隔線。 也可以給菜單子項定義快捷鍵也可以給菜單子項定義快捷鍵 具體有兩種方法具體有兩種方法: 方法一:創(chuàng)建方法一:創(chuàng)建menuitem對象時設(shè)定。例如:對象時設(shè)定。例如: menuitem mi_file_open = new menuitem(打開打開, new menushortcut(o); 方法二:通過方法二:通過menuitem對象的對象的setshortcut方法。方法。 mi_file_open.setshortcut(new menushortcut(o); 給窗體設(shè)定菜單條給窗體設(shè)定菜單條 執(zhí)行窗體對象的執(zhí)行窗體對象的setmenubar方法可將菜單條綁定
60、給方法可將菜單條綁定給窗體。窗體。 各菜單子項注冊動作事件監(jiān)聽者各菜單子項注冊動作事件監(jiān)聽者 例如:例如:mi_edit_copy.addactionlistener(this); 在監(jiān)聽者的在監(jiān)聽者的actionperformed(actionevent e)方法方法中實現(xiàn)處理代碼中實現(xiàn)處理代碼 通過通過e.getsource()或或e.getactioncommand()判斷事件判斷事件源,為每個菜單項編寫對應(yīng)的功能代碼。源,為每個菜單項編寫對應(yīng)的功能代碼。例例7-18 一個簡單的菜單一個簡單的菜單 import java.applet.*; import java.awt.*; impo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- odm框架合同范例
- 公司索賠合同范例
- 佛山美容院加盟合同范例
- 代付定金合同范例
- 中介鋼材買賣合同范本
- 凍品儲存合同范本
- 零工經(jīng)濟個人所得稅稅收征管問題研究
- 傘架電鍍加工合同范例
- 幕墻施工方案范本
- 加盟入駐合同范例
- 2025年宜賓興文縣招考聘用社區(qū)專職工作者7人高頻重點提升(共500題)附帶答案詳解
- 公園物業(yè)管理安保服務(wù)投標技術(shù)標方案參考借鑒范本
- 《習(xí)近平法治思想概論(第二版)》 課件 3.第三章 習(xí)近平法治思想的實踐意義
- 中醫(yī)藥文化知識培訓(xùn)課件
- 2025中智集團招聘高頻重點提升(共500題)附帶答案詳解
- 二 20以內(nèi)的退位減法 第1課時 十幾減9課件2024-2025人教版一年級數(shù)學(xué)下冊
- 退役軍人創(chuàng)業(yè)扶持協(xié)議
- 養(yǎng)老院院感管理與應(yīng)急預(yù)案
- 湘教版七年級上冊數(shù)學(xué)期末考試試卷及答案
- 2024-2025學(xué)年上學(xué)期河北初中英語八年級期末試卷
- 極端天氣下的新能源電力系統(tǒng)電力電量平衡體系
評論
0/150
提交評論