九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

Java語言程序設(shè)計(jì)(第三版清華)7、8章.ppt

  • 資源ID:11496902       資源大?。?span id="24d9guoke414" class="font-tahoma">1.56MB        全文頁數(shù):213頁
  • 資源格式: PPT        下載積分:14.9積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要14.9積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號:
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

Java語言程序設(shè)計(jì)(第三版清華)7、8章.ppt

1,第9章圖形用戶界面,-Java2實(shí)用教程7、8章,JAVA語言程序設(shè)計(jì),2,目錄,9.1Applet概述9.2Applet應(yīng)用程序接口9.3繪圖9.4Swing基礎(chǔ)9.5Swing的特點(diǎn)和概念9.6Swing組件9.7其它Swing特性9.8本章小結(jié)(說明:本章部分例題出自java_tutorial_sun),被瀏覽器加載和執(zhí)行,被瀏覽器加載和執(zhí)行,4,9.1Applet概述,JavaApplet一種嵌入HTML文檔中的Java程序與Application相比,Applet具有明顯的優(yōu)點(diǎn)web瀏覽器提供了運(yùn)行Applet所需要的許多功能Applet是在運(yùn)行時通過網(wǎng)絡(luò)從服務(wù)器端下載的,因而便于軟件的發(fā)布和及時更新Applet也有其局限性,不能在客戶機(jī)上讀寫當(dāng)?shù)匚募膊荒苓B接除它所在的服務(wù)器以外的其它機(jī)器,5,在瀏覽器中加載一個Applet,功能是顯示一個字符串“ThisisaJavaApplet!”importjava.awt.Graphics;importjavax.swing.JApplet;publicclassEx9_1extendsJAppletpublicvoidpaint(Graphicsg)/重載JApplet類的paint方法/參數(shù)是Graphics類的對象,是由瀏覽器傳遞過來的super.paint(g);/調(diào)用其超類JApplet類的paint方法g.drawString("ThisisaJavaApplet!",25,25);,9.1Applet概述(續(xù))例9_1,Applet概述,6,在NetBeansIDE中運(yùn)行,9.1Applet概述(續(xù))例9_1運(yùn)行結(jié)果,Applet概述,7,編譯ex9_1.java產(chǎn)生字節(jié)碼文件ex9_1.class。接下來就需要編寫一個HTML文件ex9_1.html來嵌入ex9_1.class將ex9_1.html文件和Ex9_1.class文件放在同一個目錄下?,F(xiàn)在,在瀏覽器中打開這個HTML文件,當(dāng)瀏覽器遇到Applet標(biāo)記時,就會自動載入指定的class文件,就會實(shí)現(xiàn)在屏幕上繪制一串字符的效果,9.1Applet概述(續(xù))例9_1運(yùn)行結(jié)果,Applet概述,8,9.2Applet應(yīng)用程序接口,JApplet類一個applet程序需要繼承javax.swing包中的JApplet類,也可以繼承老的AWT組件中的Applet類,JApplet類屬于新的Swing組件提供了applet在瀏覽器中運(yùn)行需要具備的特定方法瀏覽器載入時,要依次運(yùn)行init、start、paint方法離開瀏覽器頁面時,執(zhí)行stop退出瀏覽器時,執(zhí)行destroy提供了所有這些方法的默認(rèn)實(shí)現(xiàn),所以我們在編寫自己的applet時,就可以不必寫出全部方法,只要繼承這個JApplet,然后重寫特定的方法來增加特殊功能,9,9.2Applet應(yīng)用程序接口,Applet應(yīng)用程序接口,10,9.2Applet應(yīng)用程序接口(續(xù)),Applet應(yīng)用程序接口,11,輕量級組件:是用JAVA代碼畫出來的,這樣具有平臺移植性它使用AWT最好的部分來建立一個新的輕量組件集,而丟棄了AWT中有問題的重量組件部分(除JFrame,JDialog,JApplet,JInternalFrame,JWindow外)Swing是由100%純Java實(shí)現(xiàn)的,Swing組件是用Java實(shí)現(xiàn)的輕量級組件,沒有本地代碼,不依賴操作系統(tǒng)的支持,因此Swing在不同的平臺上表現(xiàn)一致重量級組件:是調(diào)用操作系統(tǒng)的函數(shù)畫出來的組件,比如主窗體。java.awt里面的是重量級的受平臺影響,12,repaint()執(zhí)行:update()方法,先刷新屏幕(以背景填充),再調(diào)用paint()方法重畫。一般可以重載update()和paint()方法,13,importjavax.swing.*;.importjava.awt.*;publicclassHelloSwingAppletextendsJAppletpublicvoidinit()JLabellabel=newJLabel("YouaresuccessfullyrunningaSwingapplet!");label.setHorizontalAlignment(JLabel.CENTER);label.setBorder(BorderFactory.createMatteBorder(1,1,2,2,Color.black);getContentPane().add(label,BorderLayout.CENTER);,9.2Applet應(yīng)用程序接口(續(xù))HelloSwingApplet.java,Applet應(yīng)用程序接口,14,9.3繪圖,圖形環(huán)境和圖形對象顏色和字體使用Graphics類繪圖使用Graphics2D類繪圖,15,9.3.1圖形環(huán)境和圖形對象,坐標(biāo)GUI組件的左上角坐標(biāo)默認(rèn)為(0,0)從左上角到右下角,水平坐標(biāo)x和垂直坐標(biāo)y增加。坐標(biāo)的單位是象素Graphics對象Graphics對象是專門管理圖形環(huán)境的。Graphics類是一個抽象類設(shè)計(jì)一個抽象類Graphics可以給程序員提供一個與平臺無關(guān)的繪圖接口,因而程序員就可以以獨(dú)立于平臺的方式來使用圖形。在各個平臺上實(shí)現(xiàn)的Java系統(tǒng)將創(chuàng)建Graphics類的一個子類,來實(shí)現(xiàn)繪圖功能,但是這個子類對程序員是透明的,也就是說我們只能看得到Graphics類,卻不必關(guān)心其實(shí)現(xiàn)在執(zhí)行paint方法時,系統(tǒng)會傳遞一個指向特定平臺的Graphics子類的圖形對象g,繪圖,16,9.3.2顏色和字體,Java中有關(guān)顏色的類是Color類,它在java.awt包中,這個類聲明了用于操作Java程序中顏色的方法和常量,繪圖,17,9.3.2顏色和字體,Font類有關(guān)字體控制,在java.awt包中,繪圖,18,9.3.3使用Graphics類繪圖,Graphics類其對象可以繪制文本、線條、矩形、多邊形、橢圓、弧等多種圖形,繪圖,21,用各種顏色繪制文字及各種圖形importjava.awt.*;importjavax.swing.*;publicclassEx9_2extendsJFramepublicEx9_2()super(“演示字體、顏色、繪圖”);/調(diào)用基類構(gòu)造方法setSize(480,250);/設(shè)置窗口大小setVisible(true);/顯示窗口publicvoidpaint(Graphicsg)super.paint(g);/callsuperclassspaintmethodg.setFont(newFont("SansSerif",Font.BOLD,12);g.setColor(Color.blue);/設(shè)置顏色g.drawString("字體ScanSerif,粗體,12號,藍(lán)色",20,50);,9.3.3使用Graphics類繪圖(續(xù))Ex9_2.java,繪圖,22,g.setFont(newFont("Serif",Font.ITALIC,14);g.setColor(newColor(255,0,0);g.drawString("字體Serif,斜體,14號,紅色",250,50);g.drawLine(20,60,460,60);/繪制直線g.setColor(Color.green);g.drawRect(20,70,100,50);/繪制空心矩形g.fillRect(130,70,100,50);/繪制實(shí)心矩形g.setColor(Color.yellow);g.drawRoundRect(240,70,100,50,50,50);/繪制空心圓角矩形g.fillRoundRect(350,70,100,50,50,50);/繪制實(shí)心圓角矩形g.setColor(Color.cyan);g.draw3DRect(20,130,100,50,true);/繪制突起效果空心矩形g.fill3DRect(130,130,100,50,false);/繪制凹陷效果實(shí)心矩形,9.3.3使用Graphics類繪圖(續(xù))Ex9_2.java,繪圖,23,g.setColor(Color.pink);g.drawOval(240,130,100,50);/繪制空心橢圓g.fillOval(350,130,100,50);/繪制實(shí)心橢圓g.setColor(newColor(0,120,20);g.drawArc(20,190,100,50,0,90);/繪制一段圓弧g.fillArc(130,190,100,50,0,90);/繪制扇形g.setColor(Color.black);intxValues=250,280,290,300,330,310,320,290,260,270;intyValues=210,210,190,210,210,220,230,220,230,220;g.drawPolygon(xValues,yValues,10);/繪制空心多邊形intxValues2=360,390,400,410,440,420,430,400,370,380;g.fillPolygon(xValues2,yValues,10);/繪制實(shí)心多邊形,9.3.3使用Graphics類繪圖(續(xù))Ex9_2.java,繪圖,24,publicstaticvoidmain(Stringargs)JFrame.setDefaultLookAndFeelDecorated(true);/設(shè)置窗口的外觀感覺為Java默認(rèn)Ex9_2application=newEx9_2();application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);運(yùn)行結(jié)果,9.3.3使用Graphics類繪圖(續(xù))Ex9_2.java運(yùn)行結(jié)果,繪圖,25,9.3.4使用Graphics2D類繪圖,Java2DAPI提供了高級的二維圖形功能分布在java.awt、java.awt.image、java.awt.color、java.awt.font、java.awt.geom、java.awt.print和java.awt.image.renderable包中它能輕松使你完成以下功能:繪制任何寬度的直線用漸變顏色和紋理來填充圖形平移、旋轉(zhuǎn)、伸縮、切變二維圖形,對圖像進(jìn)行模糊、銳化等操作構(gòu)建重疊的文本和圖形,繪圖,26,Graphics2D類要想使用Java2DAPI,就必須通過一個該類的對象Graphics2D類是Graphics類的抽象子類要訪問Graphics2D功能,必須使用如下語句將傳遞給paint方法的Graphics引用強(qiáng)制轉(zhuǎn)換為Graphics2D引用:Graphics2Dg2d=(Graphics2D)g,9.3.4使用Graphics2D類繪圖(續(xù)),繪圖,27,實(shí)現(xiàn)例9_1的功能,使用Java2D使文字出現(xiàn)漸變色效果importjava.awt.*;importjavax.swing.*;publicclassEx9_3extendsJAppletpublicvoidpaint(Graphicsg)super.paint(g);Graphics2Dg2d=(Graphics2D)g;g2d.setPaint(newGradientPaint(0,0,Color.red,180,45,Color.yellow);g2d.drawString("ThisisaJavaApplet!",25,25);,9.3.4使用Graphics2D類繪圖(續(xù))Ex9_3.java,繪圖,28,9.3.4使用Graphics2D類繪圖(續(xù))Ex9_3.java運(yùn)行結(jié)果,繪圖,29,9.4Swing基礎(chǔ),前面介紹了如何在屏幕上繪制普通的圖形,但如果需要繪制一個按鈕,并使其可以對點(diǎn)擊事件作出響應(yīng),就需要使用javaSwing提供的組件其實(shí)前面我們已經(jīng)用到的JFrame、JApplet都是Swing組件,它們分別代表窗口組件和Applet容器組件,30,9.4.1JFC與Swing,JFCJavaFoundationClasses(Java基礎(chǔ)類)的縮寫是關(guān)于GUI組件和服務(wù)的完整集合作為J2SE的一個有機(jī)部分,主要包含5個部分AWTJava2DAccessibilityDragimportjava.awt.event.*;importjavax.swing.*;publicclassEx9_4extendsJAppletpublicvoidinit()/獲取瀏覽器提供的頂層容器的內(nèi)容面板ContainercontentPane=getContentPane();contentPane.setLayout(newGridLayout(2,1);JButtonbutton=newJButton("Clickme");finalJLabellabel=newJLabel();contentPane.add(button);contentPane.add(label);button.addActionListener(newActionListener()publicvoidactionPerformed(ActionEventevent)Stringinformation=JOptionPane.showInputDialog("請輸入一串字符");label.setText(information););/創(chuàng)建監(jiān)聽器語句結(jié)束/init方法結(jié)束,9.4.3在Applet和Application中應(yīng)用Swing(續(xù))Ex9_4.java,Swing基礎(chǔ),35,9.4.3在Applet和Application中應(yīng)用Swing(續(xù))Ex9_4.java運(yùn)行結(jié)果,Swing基礎(chǔ),36,把JApplet換成JFrame,將例9-4的程序改為Applicationimportjavax.swing.*;importjava.awt.event.*;importjava.awt.*;publicclassEx9_5publicstaticvoidmain(Stringargs)/創(chuàng)建Frame窗體JFramef=newJFrame(“SimpleSwingApplication”);/獲取f的容器面板ContainercontentPane=f.getContentPane();contentPane.setLayout(newGridLayout(2,1);JButtonbutton=newJButton("Clickme");finalJLabellabel=newJLabel();contentPane.add(button);/添加按鈕contentPane.add(label);/添加標(biāo)簽button.addActionListener(newActionListener()publicvoidactionPerformed(ActionEventevent)Stringinformation=JOptionPane.showInputDialog("請輸入一串字符");label.setText(information););f.setSize(200,100);/設(shè)置大小f.show();/顯示f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);,9.4.3在Applet和Application中應(yīng)用Swing(續(xù))Ex9_5.java,Swing基礎(chǔ),37,9.4.3在Applet和Application中應(yīng)用Swing(續(xù))Ex9_5.java運(yùn)行結(jié)果,Swing基礎(chǔ),38,9.5Swing的特點(diǎn)和概念,SwingGUI組件javax.swing包源于AWT(packagejava.awt)的組件包括外觀和感覺外觀以及用戶如何和程序交互輕量級組件完全用Java寫成,不是用當(dāng)前平臺的GUI功能某些Swing組件也是重量級的,外觀和功能受到本地窗口系統(tǒng)的限制,如java.awt.Windows的子類java.applet.Applet的子類,39,9.5.1Swing的組件和容器層次(續(xù)),JComponent類是除了頂層容器以外所有Swing組件的基類,根據(jù)繼承關(guān)系,我們可以在每個基類中找找到大多數(shù)GUI組件的常見操作java.lang.Objectjava.awt.Componentjava.awt.Containerjavax.swing.JComponent,Swing的特點(diǎn)和概念,40,Component類包含paint、repaint方法,可以在屏幕上繪制組件大多數(shù)GUI組件直接或間接擴(kuò)展ComponentContainer類容納相關(guān)組件包括add方法,用來添加組件包括setLayout方法,這個方法可用來設(shè)置布局,以幫助Container對象對其中的組件進(jìn)行定位和設(shè)置組件大小JComponent類多數(shù)Swing組件的超類可抽換的外觀和感覺,即可根據(jù)需求定制外觀和感覺??旖萱I(通過鍵盤直接訪問GUI組件)一般的事件處理功能,41,通常將javax.swing包里的Swing組件歸為三個層次頂層容器中間層容器原子組件,9.5.1Swing的組件和容器層次(續(xù)),Swing的特點(diǎn)和概念,42,頂層容器Swing提供三個頂層容器的類JFrame實(shí)現(xiàn)單個主窗口JDialog實(shí)現(xiàn)一個二級窗口(對話框)JApplet在瀏覽器窗口中實(shí)現(xiàn)一個applet顯示區(qū)域必須和操作系統(tǒng)打交道,所以都是重量級組件從繼承結(jié)構(gòu)上來看,它們分別是從原來AWT組件的Frame、Dialog和Applet類繼承而來每個使用Swing組件的Java程序都必須至少有一個頂層容器,別的組件都必須放在這個頂層容器上才能顯現(xiàn)出來,9.5.1Swing的組件和容器層次(續(xù))頂層容器,Swing的特點(diǎn)和概念,43,中間層容器其存在的目的僅僅是為了容納別的組件分為兩類一般用途的JPanelJScrollPaneJSplitPaneJTabbedPaneJToolBar特殊用途的JInternalFrameJRootPane,9.5.1Swing的組件和容器層次(續(xù))中間層容器,Swing的特點(diǎn)和概念,44,原子組件通常是在圖形用戶界面中和用戶進(jìn)行交互的組件基本功能是和用戶交互信息,而不像前兩種組件那樣是用來容納別的組件的根據(jù)功能的不同,可被分為三類顯示不可編輯信息的JLabel、JProgressBar、JToolTip有控制功能、可以用來輸入信息的JButton、JCheckBox、JRadioButton、JComboBox、JList、JMenu、JSlider、JSpinner、JTexComponent等能提供格式化的信息并允許用戶選擇的JColorChooser、JFileChooser、JTable、JTree,9.5.1Swing的組件和容器層次(續(xù))原子組件,Swing的特點(diǎn)和概念,45,三層容器結(jié)構(gòu)示例importjavax.swing.*;importjava.awt.*;publicclassEx9_6publicstaticvoidmain(Stringargs)JFrame.setDefaultLookAndFeelDecorated(true);JFrameframe=newJFrame("SwingFrame");ContainercontentPane=frame.getContentPane();/獲得容器面板JPanelpanel=newJPanel();panel.setBorder(BorderFactory.createLineBorder(Color.black,5);panel.setLayout(newGridLayout(2,1);JLabellabel=newJLabel("Label",SwingConstants.CENTER);JButtonbutton=newJButton("Button");panel.add(label);panel.add(button);contentPane.add(panel);frame.pack();/對組件進(jìn)行排列frame.show();/顯示frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);,9.5.1Swing的組件和容器層次(續(xù))例9_6,Swing的特點(diǎn)和概念,46,組件,容器,容器,容器,47,Container(頂層容器),JApplet,JDialog(對話框),JFrame(窗口),48,中間容器,JScrollPane,JTabbedPane,JSplitPane,JPanel,JToolBar,49,50,9.5.1Swing的組件和容器層次(續(xù))Swing組件列表,Swing的特點(diǎn)和概念,51,9.5.3事件處理,GUI是由事件驅(qū)動的,一些常見的事件包括:移動鼠標(biāo)單雙擊鼠標(biāo)各個按鈕單擊按鈕在文本字段輸入在菜單中選擇菜單項(xiàng)在組合框中選擇、單選和多選拖動滾動條關(guān)閉窗口Swing通過事件對象來包裝事件,程序可以通過事件對象獲得事件的有關(guān)信息,Swing的特點(diǎn)和概念,52,9.5.3事件處理(續(xù))Swing組件的事件對象,Swing的特點(diǎn)和概念,53,編寫事件處理程序時,要注意三個概念事件源與用戶進(jìn)行交互的GUI組件,表示事件來自于哪個組件或?qū)ο蟊热缫獙Π粹o被按下這個事件編寫處理程序,按鈕就是事件源事件監(jiān)聽器負(fù)責(zé)監(jiān)聽事件并做出響應(yīng)一旦它監(jiān)視到事件發(fā)生,就會自動調(diào)用相應(yīng)的事件處理程序作出響應(yīng)事件對象封裝了有關(guān)已發(fā)生的事件的信息例如按鈕被按下就是一個要被處理的事件,當(dāng)用戶按下按鈕時,就會產(chǎn)生一個事件對象。事件對象中包含事件的相關(guān)信息和事件源,9.5.3事件處理(續(xù))事件處理機(jī)制的三個部分,Swing的特點(diǎn)和概念,54,程序員應(yīng)完成的兩項(xiàng)任務(wù)為事件源注冊一個事件監(jiān)聽器實(shí)現(xiàn)事件處理方法,9.5.3事件處理(續(xù))程序員應(yīng)完成的兩項(xiàng)任務(wù),Swing的特點(diǎn)和概念,55,56,通常我們用到的事件對象有ActionEvent發(fā)生在按下按鈕、選擇了一個項(xiàng)目、在文本框中按下回車鍵如:button,JList,JTextFiled,JTextAreaItemEvent發(fā)生在具有多個選項(xiàng)的組件上,如JCheckBox、JComboBoxChangeEvent用在可設(shè)定數(shù)值的拖曳桿上,例如JSlider、JProgressBar等WindowEvent用在處理窗口的操作MouseEvent用于鼠標(biāo)的操作,9.5.3事件處理(續(xù))事件對象,Swing的特點(diǎn)和概念,57,9.5.3事件處理(續(xù))Swing事件源可能觸發(fā)的事件及對應(yīng)的事件監(jiān)聽器,Swing的特點(diǎn)和概念,58,9.5.3事件處理(續(xù))Swing事件源可能觸發(fā)的事件及對應(yīng)的事件監(jiān)聽器,Swing的特點(diǎn)和概念,59,9.5.3事件處理(續(xù))Swing事件源可能觸發(fā)的事件及對應(yīng)的事件監(jiān)聽器,Swing的特點(diǎn)和概念,60,常用組件與對應(yīng)的接口、監(jiān)視器、實(shí)現(xiàn)方法,61,實(shí)現(xiàn)事件監(jiān)聽器接口這種方法需要實(shí)現(xiàn)接口中所有的方法,對我們不需要進(jìn)行處理的事件方法,也要列出來,其方法體使用一對空的花括號繼承事件監(jiān)聽器適配器類有時我們并不需要對所有事件進(jìn)行處理,為此Swing提供了一些適配器類Adapter,這些類含有所有Listener中方法的默認(rèn)實(shí)現(xiàn)(就是什么也不做),因此我們就只需編寫那些需要進(jìn)行處理的事件的方法。例如,如果只想對鼠標(biāo)敲擊事件進(jìn)行處理,如果使用MouseAdapter類,則只需要重寫mouseClicked方法就可以了使用匿名內(nèi)部類匿名內(nèi)部類(AnonymousInnerClass),即是沒有名字的內(nèi)部類,這是Java為了方便我們編寫程序而設(shè)計(jì)的一個機(jī)制。因?yàn)橛袝r候有的內(nèi)部類只需要創(chuàng)建一個它的對象就可以了,以后再不會用到這個類,這時候使用匿名內(nèi)部類就比較合適,而且也免去了給它取名字的煩惱特別適用于已經(jīng)繼承了某個父類(例如Applet程序,主類必須繼承JApplet類或Applet類),則根據(jù)java語法規(guī)則,就不能再繼承適配器類的情況,而且使用這種方法程序看起來會比較清楚明了,9.5.3事件處理(續(xù))三種實(shí)現(xiàn)事件處理的方法,Swing的特點(diǎn)和概念,創(chuàng)建一窗口,當(dāng)鼠標(biāo)在窗口中點(diǎn)擊時,在窗口標(biāo)題欄中顯示點(diǎn)擊位置坐標(biāo)。方法一:實(shí)現(xiàn)MouseListener接口importjava.awt.event.*;/載入MouseListener類所在的包importjavax.swing.*;/載入JFrame所在的包publicclassEx9_8_1implementsMouseListenerJFramef;publicEx9_8_1()f=newJFrame();/新建一窗口f.setSize(300,150);f.show();f.addMouseListener(this);/為窗口增加鼠標(biāo)事件監(jiān)聽器f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);publicvoidmousePressed(MouseEvente)publicvoidmouseReleased(MouseEvente)publicvoidmouseEntered(MouseEvente)publicvoidmouseExited(MouseEvente)publicvoidmouseClicked(MouseEvente)f.setTitle("點(diǎn)擊坐標(biāo)為("+e.getX()+","+e.getYpublicstaticvoidmain(Stringargs)newEx9_8_1();,9.5.3事件處理(續(xù))例9_8_1,Swing的特點(diǎn)和概念,實(shí)現(xiàn)所有接口方法,哪怕什么也不做,63,方法二:繼承MouseAdapter類importjava.awt.event.*;/載入MouseAdapter所在的包importjavax.swing.*;publicclassEx9_8_2extendsMouseAdapterJFramef;publicEx9_8_2()f=newJFrame();f.setSize(300,150);f.show();f.addMouseListener(this);f.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);publicvoidmouseClicked(MouseEvente)f.setTitle("點(diǎn)擊坐標(biāo)為("+e.getX()+","+e.getY()+")");publicstaticvoidmain(Stringargs)newEx9_8_2();,9.5.3事件處理(續(xù))例9_8_2,Swing的特點(diǎn)和概念,64,方法三:使用匿名內(nèi)部類importjava.awt.event.*;importjavax.swing.*;publicclassEx9_8_3JFramef;publicEx9_8_3()f=newJFrame();f.setSize(300,150);f.show();f.addMouseListener(newMouseAdapter()publicvoidmouseClicked(MouseEvente)f.setTitle("點(diǎn)擊坐標(biāo)為("+e.getX()+","+e.getY()+")"););/為窗口添加鼠標(biāo)事件監(jiān)聽器語句結(jié)束f.addWindowListener(newWindowAdapter()publicvoidwindowClosing(WindowEvente)System.exit(0););/為窗口添加窗口事件監(jiān)聽器語句結(jié)束publicstaticvoidmain(Stringargs)newEx9_8_3();,9.5.3事件處理(續(xù))例9_8_3,Swing的特點(diǎn)和概念,65,采用三種不同方法的程序,其運(yùn)行效果都是一樣的,當(dāng)鼠標(biāo)在窗口中點(diǎn)擊的時候,窗口標(biāo)題欄將出現(xiàn)所點(diǎn)位置的坐標(biāo)信息,9.5.3事件處理(續(xù))例9_8運(yùn)行結(jié)果,Swing的特點(diǎn)和概念,66,9.6.3原子組件,Swing原子組件有很多種,與頂層容器和中間容器相比,原子組件用法都比較簡單可將其分為三類顯示不可編輯信息JLabel、JProgressBar、JToolTip有控制功能、可以用來輸入信息JButton、JCheckBox、JRadioButton、JComboBox、JList、JMenu、JSlider、JSpinner、JTextComponent能提供格式化的信息并允許用戶選擇JColorChooser、JFileChooser、JTable、JTree,Swing組件,67,各類組件,Menu,TextField,TextArea,Button,Label,JChoiceButton,JRadioButton,JComboBox,JProgressBar,SingleList,JCheckbox,Example9/srcRadioButtonDemo.javaCheckBoxDemo.java,68,JLabel該組件上可以顯示文字和圖像,并能指定兩者的位置提示信息通常不必直接處理JToolTip類通常使用setToolTipText()方法為組件設(shè)置提示信息有的組件例如JTabbedPane由多個部分組成,需要鼠標(biāo)在不同部分停留時顯示不同的提示信息,這時可以在其addTab()方法中設(shè)置提示信息參數(shù),也可以通過setTooltipTextAt方法進(jìn)行設(shè)置,9.6.2原子組件(續(xù))第一類原子組件,Swing組件,69,7.4標(biāo)簽Labels,UsedtoprovidetextinstructionsorinformationonaGUI.Displaysasinglelineofread-onlytext.MustbeinstantiatedwithacallaconstructorSeveralLabelconstructorsandmethodsareshownbelow:,70,Label():constructsanemptylabel-textisnotdisplayed.Label(Strings):constructsaLabelthatdisplaysthetextswithleft-justedalignmentLabel(Strings,intalignment):constructsaLabelthatdisplaysthetextswiththespecifiedalignment.Usually,possiblealignmentsareLabel.LEFT,Label.CENTER,andLabel.RIGHT,71,getText():returnstheLabeltextsetText(Strings):setstheLabeltext/read-onlystringsetAlignment(intalignment):setsthelabelalignmenttoLabel.LEFT,Label.CENTERandLabel.RIGHT,72,setBackgroun(Colorc):setscolorforthebackgroundsetForeground(Colorc):setscolorforthestringinthelabelExampleLabelDemodemonstratetheclassLabel.Example:LabelTest.java,返回,73,7.3文本框,java.awt包中的類TextField類創(chuàng)建文本框用戶可以在文本框輸入單行的文本,74,1.TextField類的主要方法,TextField(intx)如果使用這個構(gòu)造方法創(chuàng)建文本框?qū)ο?,文本框中的可見字符序列的長度為x個機(jī)器字符長。文本框是可編輯的,用戶可以在文本框中輸入若干個字符。TextField(Strings)如果使用這個構(gòu)造方法創(chuàng)建文本框?qū)ο螅瑒t文本框的初始字符串為s。文本框是可編輯的,可以在文本框中輸入若干個字符。TextField(Strings,intx):ConstructsaTextFieldobjectdisplayingastringwiththelengthofTextFieldpublicvoidsetText(Strings)文本框?qū)ο笳{(diào)用該方法可以設(shè)置文本框中的文本為參數(shù)s指定的文本,文本框中先前的文本將被清除。publicStringgetText()文本框?qū)ο笳{(diào)用該方法可以獲取文本框中的文本。,75,setEchoChar(charc):Setthecharacterctobedisplayed.Usedforpassword.setEditable(booleanb):SettheeditibilityoftheTextFeild,trueisforeditable,falseisforuneditablepublicvoidaddActionListener(ActionListenerl)文本框?qū)ο笳{(diào)用該方法可以向文本框增加動作監(jiān)視器(將監(jiān)視器注冊到文本框)。例子:Example8_1.java,76,importjava.applet.*;importjava.awt.*;publicclassExample8_1extendsAppletTextFieldtext1,text2,text3;publicvoidinit()text1=newTextField("Password:",10);text1.setEditable(false);text2=newTextField(10);text2.setEchoChar(*);text3=newTextField("Iamatextfiled",20);text3.setText("Change");add(text1);add(text2);add(text3);,77,Example7_3.java(thisaslistener)Example8_2.java(otherobjectaslistener)(見后),78,importjava.awt.*;importjava.awt.event.*;classMyWindowextendsFrameimplementsActionListenerTextFieldtext1,text2,text3;MyWindow()setLayout(newFlowLayout();text1=newTextField(8);text2=newTextField(8);text3=newTextField(15);add(text1);add(text2);add(text3);/事件源text1、1調(diào)用addActionListener(),將本類對象作為監(jiān)視器text1.addActionListener(this);text2.addActionListener(this);setBounds(100,100,150,150);setVisible(true);validate();publicvoidactionPerformed(ActionEvente)if(e.getSource()=text1)Stringword=text1.getText();if(word.equals("boy")text3.setText("男孩");elseif(word.equals("girl")text3.setText("女孩");elseif(word.equals("sun")text3.setText("太陽");,elsetext3.setText("沒有該單詞");elseif(e.getSource()=text2)Stringword=text2.getText();if(word.equals("男孩")text3.setText("boy");elseif(word.equals("女孩")text3.setText("girl");elseif(word.equals("太陽")text3.setText("sun");elsetext3.setText("沒有該單詞");publicclassExample7_3publicstaticvoidmain(Stringargs)MyWindowwin=newMyWindow();,79,importjava.applet.*;importjava.awt.*;importjava.awt.event.*;publicclassExample8_2extendsAppletstaticTextFieldtext1,text2,text3;Teacherteacher;publicvoidinit()text1=newTextField(10);text2=newTextField(10);/text3=newTextField(10);add(text1);add(text2);/add(text3);text2.setBackground(Color.red);teacher=newTeacher();/事件源text1調(diào)用addActionListener(),將Teacher類對象作為監(jiān)視器text1.addActionListener(teacher);,80,classTeacherimplementsActionListenerpublicvoidactionPerformed(ActionEvente)if(e.getSource()=Example8_2.text1),返回,81,JProgressBar在一些軟件運(yùn)行時,會出現(xiàn)一個進(jìn)度條告知目前進(jìn)度如何。通過使用該組件我們可以輕松地為軟件加上一個進(jìn)度條隨時間增加,進(jìn)度條輸出進(jìn)度變化情況,同時標(biāo)簽上顯示出當(dāng)前進(jìn)度。鼠標(biāo)移到兩組件時,顯示提示信息,9.6.2原子組件(續(xù))例9_9,Swing組件,82,importjavax.swing.*;importjava.awt.*;importjavax.swing.event.*;importjava.awt.event.*;publicclassEx9_9implementsChangeListenerJLabellabel;JProgressBarpb;publicEx9_9()intvalue=0;JFramef=newJFrame("第一類原子組件演示");ContainercontentPane=f.getContentPane();label=newJLabel("",JLabel.CENTER);label.setToolTipText("顯示進(jìn)度信息");pb=newJProgressBar();pb.setOrientation(JProgressBar.HORIZONTAL);/設(shè)置進(jìn)度條方向pb.setMinimum(0);/設(shè)置最小值pb.setMaximum(100);/設(shè)置最大值,83,pb.setValue(value);/初值pb.setStringPainted(true);/設(shè)置進(jìn)度條上顯示進(jìn)度pb.addChangeListener(this);/增加時間監(jiān)聽器pb.setToolTipText("進(jìn)度條");/設(shè)置提示信息contentPane.add(pb,BorderLayout.CENTER);contentPane.add(label,BorderLayout.SOUTH);f.setSize(400,60);f.setVisible(true);for(inti=1;i0)?(1000/fps):100;/Setupatimerthatcallsthisobjectsactionhandler.timer=newTimer(delay,this);timer.setInitialDelay(0);timer.setCoalesce(true);,9.7.5定時器(續(xù))AnimatorApplicationTimer.java,其它Swing特性,148,addWindowListener(newWindowAdapter()publicvoidwindowIconified(WindowEvente)stopAnimation();publicvoidwindowDeiconified(WindowEvente)startAnimation();publicvoidwindowClosing(WindowEvente)System.exit(0););label=newJLabel("Frame",JLabel.CENTER);label.addMouseListener(newMouseAdapter()publicvoidmousePressed(MouseEvente)if(frozen)frozen=false;startAnimation();elsefrozen=true;stopAnimation(););getContentPane().add(label,BorderLayout.CENTER);,9.7.5定時器(續(xù))AnimatorApplicationTimer.java,其它Swing特性,149,/Canbeinvokedbyanythread(sincetimeristhread-safe).publicvoidstartAnimation()if(frozen)/Donothing.Theuserhasrequestedthatwe/stopchangingtheimage.else/Startanimating!if(!timer.isRunning()timer.start();/Canbeinvokedbyanythread(sincetimeristhread-safe).publicvoidstopAnimation()/Stoptheanimatingthread.if(timer.isRunning()timer.stop();,9.7.5定時器(續(xù))AnimatorApplicationTimer.java,其它Swing特性,150,publicvoidactionPerformed(ActionEvente)/Advancetheanimationframe.frameNumber+;label.setText("Frame"+frameNumber);publicstaticvoidmain(Stringargs)AnimatorApplicationTimeranimator=null;intfps=10;/Getframespersecondfromthecommandlineargument.if(args.length>0)tryfps=Integer.parseInt(args0);catch(Exceptione)animator=newAnimatorApplicationTimer(fps,"AnimatorwithTimer");animator.pack();animator.setVisible(true);animator.startAnimation();,9.7.5定時器(續(xù))AnimatorApplicationTimer.java,其它Swing特性,151,說明為窗口通過addWindowListener方法添加了事件監(jiān)聽器,窗口最小化時停止Timer,窗口恢復(fù)時重新啟動Timer為標(biāo)簽通過addMouthListener方法添加了事件監(jiān)聽器,在標(biāo)簽上點(diǎn)擊時可以交替暫停和啟動TimerTimer組件會根據(jù)程序員設(shè)定的間隔時間,周期性的觸發(fā)ActionEvent事件,在ActionEvent中讓標(biāo)簽上顯示的信息遞增,9.7.5定時器(續(xù))AnimatorApplicationTimer運(yùn)行結(jié)果,其它Swing特性,152,9.8本章小結(jié),本章內(nèi)容Applet的概念及基本方法Java的繪圖機(jī)制,及實(shí)現(xiàn)更為出色繪圖效果的Java2DSwing的結(jié)構(gòu)層次、布局管理,以及如何為其編寫事件處理程序很多Swing組件都要使用的特色如Action對象、邊框、外觀風(fēng)格、線程、定時器本章要求掌握圖形用戶界面程序的編程方法、思路,學(xué)會在Applet和Application中引入圖形用戶界面了解Java的圖形環(huán)境,繪制簡單圖形掌握Swing的結(jié)構(gòu)和特點(diǎn),學(xué)會使用布局管理、事件處理,以及常用的Swing組件,153,AWT(AbstractWindowToolkit)組件庫為各類Java應(yīng)用程序提供了多種GUI工具。提供的組件多為重量級組件。Swing,以awt為基礎(chǔ),提供了一整套用Java語言編寫的GUI組件,以保證可移植性。Java2D是一種圖形API,它為Java應(yīng)用程序提供了高級的二維(2D)圖形圖像處理類的集合,同時,該API還包含了一套擴(kuò)展字體集合。DragandDrop技術(shù)提供了Java和本地應(yīng)用程序之間的互用性,用來在Java應(yīng)用程序和不支持Java技術(shù)的應(yīng)用程序之間交換數(shù)據(jù)。AccessibilityAPI提供了一套高級工具,可以輔助開發(fā)使用非傳統(tǒng)輸入和輸出方式的應(yīng)用程序,它提供了一個輔助技術(shù)接口,如:屏幕閱讀器、屏幕放大器、聽覺文本閱讀器(語音處理),等等。,返回,154,9.6.1頂層容器,Swing提供了3個頂層容器類:JFrameJAppletJDialog都是重量級組件,分別繼承了AWT組件Frame、Applet和Dialog每個頂層容器都有一個內(nèi)容面板,通常直接或間接的容納別的可視組件可以有選擇地為頂層容器添加菜單,菜單被放置在頂層容器上,但是在內(nèi)容面板之外,Swing組件,返回,155,java.lang.Objectjava.awt.Componentjava.awt.Containerjava.awt.Windowjava.awt.Framejavax.swing.JFrame每個包含Swing組件的主窗口都應(yīng)用JFrame來實(shí)現(xiàn),9.6.1頂層容器(續(xù))JFrame的繼承結(jié)構(gòu),Swing組件,156,java.lang.Objectjava.awt.Componentjava.awt.Containerjava.awt.Paneljava.awt.Appletjavax.swing.JApplet每個包含Swing組件的Applet都應(yīng)作為JApplet的子類來實(shí)現(xiàn),Swing組件,9.6.1頂層容器(續(xù))JApplet的繼承結(jié)構(gòu),157,java.lang.Objectjava.awt.Componentjava.awt.Containerjava.awt.Windo

注意事項(xiàng)

本文(Java語言程序設(shè)計(jì)(第三版清華)7、8章.ppt)為本站會員(max****ui)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!