第6章 Java圖形用戶界面_第1頁
第6章 Java圖形用戶界面_第2頁
第6章 Java圖形用戶界面_第3頁
第6章 Java圖形用戶界面_第4頁
第6章 Java圖形用戶界面_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第6章Java圖形用戶界面6.1通過圖形界面輸入數(shù)據(jù)初始化Human對(duì)象知識(shí)要點(diǎn)

圖形用戶界面

事件處理機(jī)制布局管理[實(shí)例]在圖形界面的窗口中,讀入姓名,并初始化一個(gè)Human對(duì)象。1.詳細(xì)設(shè)計(jì)classInstanceOfHumanextendsFrameimplementsActionListener{

窗口中各個(gè)對(duì)象的定義;publicInstanceOfHuman(){

圖形界面的布局;

按鈕的監(jiān)聽;

窗口調(diào)整;}

處理ActionEvent事件的方法actionPerformed();}2.編碼實(shí)現(xiàn)1)引入java.awt和java.awt.event包語句:importjava.awt.*;importjava.awt.event.*;分析:包java.awt中包含了處理圖形界面的類,圖形界面都在一個(gè)窗口(Frame是一種窗口)內(nèi)、本實(shí)例窗口內(nèi)有文本框TextField、顯示標(biāo)簽Label、按鈕Button等。在圖形方式工作時(shí),往往希望點(diǎn)擊按鈕產(chǎn)生一個(gè)事件,自動(dòng)轉(zhuǎn)到事件處理程序。事件處理機(jī)制都包含在包java.awt.event中,而且要求類實(shí)現(xiàn)接口ActionListener。2)圖形界面的布局語句:setLayout(newFlowLayout());add(namelabel);add(nametextfield);add(okbutton);add(out);分析:FlowLayout()是一種布局方式,決定對(duì)象在窗口如何擺布。方法add()把一個(gè)個(gè)對(duì)象放在窗口中。3)按鈕的監(jiān)聽語句:okbutton.addActionListener(this);分析:窗口中的對(duì)象都有可能引發(fā)事件,本實(shí)例希望一旦按下按鈕,產(chǎn)生事件初始化一個(gè)對(duì)象,所以只對(duì)按鈕進(jìn)行監(jiān)聽。4)窗口調(diào)整語句:setSize(400,100);show();分析:本實(shí)例把窗口調(diào)整大小為400×100,并處于顯示狀態(tài)。5)處理ActionEvent事件的方法actionPerformed()語句:publicvoidactionPerformed(ActionEventa){Humanp=newHuman(nametextfield.getText());out.setText("Iam"+);}分析:按鈕已被監(jiān)聽,一旦按下按鈕會(huì)產(chǎn)生一個(gè)ActionEvent事件,自動(dòng)轉(zhuǎn)到方法actionPerformed()去執(zhí)行。本實(shí)例實(shí)現(xiàn)actionPerfomed()方法,實(shí)例化一個(gè)Human對(duì)象,并在一個(gè)Label上顯示這個(gè)人的名字。3.源代碼

略。4.測(cè)試與運(yùn)行測(cè)試程序如下:publicclassInstanceOfHumanTest{publicstaticvoidmain(Stringargs[]){newInstanceOfHuman();}}5.技術(shù)分析1)圖形用戶界面Java的包java.awt中有AWT(AbstractWindowToolkit)負(fù)責(zé)生成各種標(biāo)準(zhǔn)圖形界面和處理界面的各種事件。2)事件處理機(jī)制圖形用戶界面通過事件機(jī)制實(shí)現(xiàn)用戶和程序的交互。3)布局管理將加入到容器(通常為窗口等)的組件按照一定的順序和規(guī)則放置,使之看起來更美觀,這就是布局。布局由布局管理器(LayoutManager)來管理。6.問題與思考1)本節(jié)實(shí)例和例子中的類InstanceOfHuman都從Frame繼承過來,能從Panel繼承嗎?為什么?2)在圖形界面的窗口中,讀入姓名、性別、出生年月,并利用以下Human的構(gòu)造方法Human(Stringname,Stringgender,Stringbirth)初始化一個(gè)Human對(duì)象。為防止用戶輸入錯(cuò)誤,用單選按鈕輸入性別,再對(duì)gender分別賦予"m"或"f"。6.2JavaApplets6.2.1在網(wǎng)頁中顯示一句話的程序知識(shí)要點(diǎn)HTML的基本結(jié)構(gòu)<APPLET>標(biāo)簽Applet類[實(shí)例]編寫JavaApplet程序,在瀏覽器中輸出一句話Helloworld!。1.詳細(xì)設(shè)計(jì)paint()是從繼承Applet過來的方法,在applet初始化時(shí)、窗口移動(dòng)時(shí)paint()方法會(huì)被反復(fù)的調(diào)用。Applet程序是界面是圖形環(huán)境,不能再用System.out.println()顯示文字。在paint()中,使用類Graphics中的drawString()函數(shù)就能實(shí)現(xiàn)顯示文字。classHelloWorldextendsApplet{

publicvoidpaint(){

drawString()方法顯示"HelloWorld!";

}}2.輸出文字編碼實(shí)現(xiàn)語句:g.drawString("HelloWorld!",5,25);分析:drawString()是類Graphics的方法,類的方法一般由類對(duì)象調(diào)用,g是Graphics的一個(gè)對(duì)象,g.drawString("HelloWorld!",5,25);實(shí)現(xiàn)在坐標(biāo)5,25處顯示HelloWorld!。3.源代碼

略。4.測(cè)試與運(yùn)行為運(yùn)行HelloWorld.class,需要?jiǎng)?chuàng)建包含如下HTML語句的名為HelloWorld.html的文件。<HTML><TITLE>HelloWorld!Applet</TITLE><APPLETCODE="HelloWorld.class"WIDTH=200HEIGHT=100></APPLET></HTML>5.技術(shù)分析1)HTML的基本結(jié)構(gòu)超文本文檔分文檔頭和文檔體兩部分,在文檔頭里,對(duì)這個(gè)文檔進(jìn)行了一些必要的定義,文檔體中才是要顯示的各種文檔信息。<HTML>

<HEAD>頭部信息

</HEAD>

<BODY>文檔主體,正文部分

</BODY></HTML>2)<APPLET>標(biāo)簽一個(gè)在HTML頁面中包含有Applet的HTML文檔,須用<APPLET></APPLET>標(biāo)簽指明Applet容器應(yīng)該裝入和執(zhí)行哪一個(gè)Applet。3)Applet類Applet類是所有Applet應(yīng)用的基類,所有的Java小應(yīng)用程序都必須繼承該類。Applet類用四種基本方法init()、start()、stop()、destroy()來控制其運(yùn)行狀態(tài)。6.問題與思考1)編寫一個(gè)Applet程序,輸出自己的姓名。寫出該程序的源代碼和包含<APPLET>標(biāo)簽的網(wǎng)頁。2)編寫類Yanghui,它是一個(gè)Applet程序,繪制可變大小的楊輝三角形,如下圖所示。1111211331

行數(shù)由Applet參數(shù)決定。6.2.2Applets應(yīng)用知識(shí)要點(diǎn)

與用戶的交互

處理圖像

處理聲音[實(shí)例]編寫JavaApplet程序,處理按鍵和松鍵。1.詳細(xì)設(shè)計(jì)publicclassKeyboardextendsApplet{

定義初始字符串變量;

在paint()方法中輸出字符串;

定義鍵盤按下的處理方法;

定義鍵盤被松開的處理方法;}2.輸出文字編碼實(shí)現(xiàn)1)在paint()方法中輸出字符串語句:publicvoidpaint(Graphicsg){g.drawString(text,20,20);}分析:paint()方法是Applet的畫圖方法,Applet一一旦啟動(dòng)或調(diào)用repaint()都會(huì)運(yùn)行paint()方法。2)定義鍵盤按下的處理方法語句:publicbooleankeyDown(Eventevt,intx){//鍵盤被按下的處理函數(shù)text="KeyDown";repaint();returntrue;}分析:鍵盤按下事件會(huì)觸發(fā)運(yùn)行該方法,方法中,對(duì)字符串變量text賦值后,調(diào)用repaint()方法重新畫圖。3)定義鍵盤被松開的處理方法語句:publicbooleankeyUp(Eventevt,intx){//鍵盤被松開的處理函數(shù)text="";repaint();returntrue;}分析:鍵盤放松事件會(huì)觸發(fā)運(yùn)行該方法,方法中,對(duì)字符串變量text賦空值后,調(diào)用repaint()方法重新畫圖。3.源代碼

略。4.測(cè)試與運(yùn)行啟動(dòng)Applet程序前,編輯一個(gè)網(wǎng)頁Keyboard.html,包含以下內(nèi)容:<HTML><TITLE>Keyboard</TITLE><APPLETCODE="Keyboard.class"WIDTH=200HEIGHT=100></APPLET></HTML>5.技術(shù)分析1)與用戶的交互用戶可以通過鼠標(biāo)與JavaApplet程序?qū)υ挕?)處理圖像JavaApplet使用的是GIF或JPEG格式的圖像文件。Applet使用getImage方法把圖像文件和Image對(duì)象聯(lián)系起來。3)處理聲音使用Applet播放聲音時(shí)需首先定義AudioClip對(duì)象,getAudioClip方法能把聲音賦予AudioClip對(duì)象。如果僅想把聲音播放一遍,應(yīng)調(diào)用AudioClip類的play方法,如果想循環(huán)把聲音剪輯,應(yīng)選用AudioClip類的loop方法。6.問題與思考編寫一個(gè)Applet程序,當(dāng)拖曳鼠標(biāo)時(shí),以按下鼠標(biāo)和釋放鼠標(biāo)的位置為對(duì)角線繪制一個(gè)矩形。6.3匿名類簡(jiǎn)化圖形事件處理程序知識(shí)要點(diǎn)

內(nèi)部類概念

內(nèi)部的種類[實(shí)例]用匿名類實(shí)現(xiàn)類InstanceOfHuman。1.詳細(xì)設(shè)計(jì)classInstanceOfHumanextendsFrameimplementsActionListener{

窗口中各個(gè)對(duì)象的定義;publicInstanceOfHuman(){

圖形界面的布局;

按鈕的監(jiān)聽;

匿名類監(jiān)聽窗口;addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});

窗口調(diào)整;}

處理ActionEvent事件的方法actionPerformed();}2.編碼實(shí)現(xiàn)程序的結(jié)構(gòu)與前面主要的區(qū)別是用匿名類監(jiān)聽窗口,實(shí)現(xiàn)的語句如下:語句:addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});分析:直接用newWindowAdapter(){...}定義了一個(gè)類。這個(gè)類沒有名字,所以稱為匿名類。該匿名類在類InstanceOfHuman中定義,又稱內(nèi)部類,匿名類是內(nèi)部類的一種。3.源代碼

略。4.測(cè)試與運(yùn)行測(cè)試程序如下:publicclassInstanceOfHumanTest{publicstaticvoidmain(Stringargs[]){newInstanceOfHuman();}}5.技術(shù)分析1)內(nèi)部?jī)?nèi)概念在一個(gè)類的內(nèi)部還有另外一個(gè)類,稱為內(nèi)部類,一般格式如下:class外部類{ class內(nèi)部類{ }}2)內(nèi)部類種類非靜態(tài)內(nèi)部類在類中定義類,稱之為內(nèi)部類(Innerclass)或巢狀類(Nestedclass)。非“static”的內(nèi)部類可以分為三種:成員內(nèi)部類(Memberinnerclass)、區(qū)域內(nèi)部類(Localinnerclass)與匿名內(nèi)部類(Anonymousinnerclass)。

靜態(tài)內(nèi)部類內(nèi)部類還可以被聲明為"static",不過由于是"static",它不能存取外部類的方法,而必須通過外部類所生成的對(duì)象來調(diào)用。6.問題與思考使用內(nèi)部匿名類,它繼承Object類并改寫其toString()方法,如下:Objectobj=newObject(){publicStringtoString(){return"匿名類對(duì)象";}};把它放入外部類Outer的main()方法中,并輸出obj.toString()的結(jié)果。編譯成功后本程序?qū)⑸蓭讉€(gè)類,它們的名字如何?6.4應(yīng)用Swing創(chuàng)建用戶

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論