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

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

第9章圖形用戶界面

  • 資源ID:240519550       資源大小:1.07MB        全文頁(yè)數(shù):78頁(yè)
  • 資源格式: PPT        下載積分:16積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開(kāi)放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要16積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫(xiě)的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

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

第9章圖形用戶界面

圖形用戶界面圖形用戶界面(GUI)主要內(nèi)容主要內(nèi)容lGUI概述lJava圖形APIl容器及布局管理l輔助類l事件處理lSwing用戶界面組件GUI概述概述lGUIGraphic User Interfacel構(gòu)成:l抽象窗口工具集AWT(Abstract Window Toolkit)對(duì)運(yùn)行的各平臺(tái),組件通過(guò)各自的代理映射成平臺(tái)特定組件適用于簡(jiǎn)單的GUI程序,對(duì)復(fù)雜的GUI項(xiàng)目不適用容易發(fā)生平臺(tái)特定故障重型組件lSwing組件庫(kù)大多數(shù)組件直接使用Java代碼編寫(xiě)更少依賴目標(biāo)機(jī)器上的平臺(tái)、本地資源輕型組件lApplet單獨(dú)介紹GUI概述概述lGUIGraphic User Interfacel說(shuō)明:lSwing組件不能取代AWT的全部類能替代AWT的用戶界面組件(Button、TextField等)輔助類(Graphics、Color、Font、FontMetrics、LayoutManager)保持不變使用AWT的事件模型l課程介紹方式:AWT中仍被Swing使用的內(nèi)容:容器和LayoutManager事件模型輔助類的使用繪圖Swing組件基本用法各組件展開(kāi)簡(jiǎn)介Java圖形圖形APIlJava圖形程序設(shè)計(jì)所用類的層次結(jié)構(gòu)包java.awt中的類包javax.swing中的swing組件Java圖形圖形APIlJava圖形程序設(shè)計(jì)所用類的層次結(jié)構(gòu)Java圖形圖形APIlJava圖形程序設(shè)計(jì)所用類的層次結(jié)構(gòu)l說(shuō)明:lComponent:所有用戶界面類的父類lContainer:對(duì)組件分組的類lJComponent:所有輕型Swing組件的父類l圖形類:l容器類l組件類l輔助類容器及布局管理容器及布局管理lContainer類:抽象類lWindow、Frame、JFramel不依賴于其他容器而獨(dú)立存在的容器l使用步驟:l構(gòu)造函數(shù)創(chuàng)建實(shí)例l激活容器的add方法追加其他組件l激活容器的setLayout方法進(jìn)行布局設(shè)置l激活setSize方法設(shè)置容器大小l激活setVisible(true)方法使其可見(jiàn)lPanel、Applet、JAppletl不能單獨(dú)存在,只能存在于其他容器中l(wèi)用法類似于獨(dú)立容器,只是必須追加到獨(dú)立容器中容器及布局管理器容器及布局管理器l容器使用示例:l說(shuō)明:以JFrame為例l居中問(wèn)題java.awt.Toolkit類可用于得到屏幕的寬和高例如:Dimension dm=Toolkit.getDefaultToolkit().getScreenSize();int x=dm.width;int y=dm.height;x=(x-jf.getWidth()/2;y=(y-jf.getHeight()/2;jf.setLocation(x,y);l追加其他組件:例如:jf.getContentPane().add(new JButton(Welcom);l退出:例如:jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);容器及布局管理容器及布局管理l布局管理器l說(shuō)明:l組件在容器中的位置和尺寸是由布局管理器決定的l所有容器都會(huì)引用一個(gè)布局管理器實(shí)例,通過(guò)它進(jìn)行組件的布局管理l默認(rèn)布局管理器:每個(gè)容器創(chuàng)建后都有默認(rèn)布局管理器Window、Frame、Dialog、JFrame:BorderLayoutPanel、Applet、JApplet:FlowLayoutl布局管理器設(shè)置:setLayout(new FlowLayout()更改布局管理器setLayout(null)取消布局管理器setLocationsetSizesetBounds容器及布局管理器容器及布局管理器l布局管理器:l種類:ljava.awt中包含5種FlowLayoutBorderLayoutGridLayoutCardLayoutGridBagLayoutljavax.swing中定義了若干種BoxLayout容器及布局管理器容器及布局管理器l布局管理器:lFlowLayout:流式布局管理器l按組件添加次序從左到右地放置在容器中。到達(dá)容器邊界,則換到下一行l(wèi)構(gòu)造函數(shù):FlowLayout()FlowLayout(int align)FlowLayout(int align,int hgap,int vgap)l其他方法:setAlignmentlayoutContainer(Container)重新布局l示例:容器及布局管理器容器及布局管理器l布局管理器:lBorderLayout:邊界布局管理器l將容器分成東、南、西、北、中5個(gè)區(qū)l構(gòu)造函數(shù):BorderLayout()BorderLayout(int hgap,int vgap)l使用該布局管理,添加組件時(shí),可指定區(qū)域void add(Component comp,Object constraints)其中constraints取值:BorderLayout.NORTH、BorderLayout.SOUTH、BorderLayout.EAST、BorderLayout.WEST、BorderLayout.CENTER容器及布局管理器容器及布局管理器l布局管理器:lGridLayout:網(wǎng)格布局管理器l將容器分隔成若干行、列,組件被填充到每個(gè)網(wǎng)格中l(wèi)構(gòu)造函數(shù):GridLayout()GridLayout(int rows,int cols)GridLayout(int rows,int cols,int hgap,int vgap)l容器添加組件時(shí)可以指定網(wǎng)格序號(hào)l示例:如右圖所示的計(jì)算器容器及布局管理器容器及布局管理器l布局管理器:lCardLayout:卡片布局管理器l將容器看作一系列卡片,在任意時(shí)刻只有一張卡片可見(jiàn)l構(gòu)造函數(shù):CardLayout()CardLayout(int hgap,int vgap)l其他方法:向容器中追加組件時(shí),需要指定組件所在卡片的名稱void add(Component comp,Object constraints)其中constraints為String,指定卡片名show(Container parent,String name)顯示具體哪張卡片容器及布局管理器容器及布局管理器l布局管理器:lGridBagLayout:網(wǎng)格包布局管理器l在GridLayout基礎(chǔ)上提供更為復(fù)雜的布局。允許各組件大小各不相同,允許單個(gè)組件所在顯示區(qū)占多個(gè)網(wǎng)格l使用步驟:創(chuàng)建GridBagLayout布局管理器的一個(gè)實(shí)例GridBagLayout layout=new GridBagLayout();container.setLayout(layout);創(chuàng)建一個(gè)GridBagContraints實(shí)例GridBagContraints constraints=new GridBagContraints();為要添加的某個(gè)組件設(shè)置GridBagContraints的各種屬性:constraints.gridx=1;constraints.gridy=1;constraints.gridwidth=1;constraints.gridheight=1;通知布局管理器放置組件時(shí)的GridBagContraints信息layout.setConstraints(comp,contraints);向容器中追加組件:container.add(comp);重復(fù)上述后三步動(dòng)作容器及布局管理器容器及布局管理器l布局管理器:lGridBagLayout:網(wǎng)格包布局管理器l關(guān)于GridBagContraints:包含了如何把一個(gè)組件添加到容器中的布局信息重要屬性:gridx和gridy:指定組件顯示區(qū)域左上角的列和行g(shù)ridWidth和gridHeight:指定組件顯示區(qū)域占據(jù)的列數(shù)和行數(shù)fill:組件顯示區(qū)域大于組件要求的大小,決定如何改變組件GridBagConstraints.NONE默認(rèn)GridBagConstraints.HORIZONAL水平方向填充GridBagConstraints.VERTICAL垂直方向填充GridBagConstraints.BOTH容器及布局管理器容器及布局管理器l布局管理器:lBoxLayout:通常與Box容器聯(lián)合使用lBox:具有以下靜態(tài)工廠方法:createHorizontalBox():生成Box對(duì)象,采用水平BoxLayout,組件沿水平方向放置createVerticalBox():默認(rèn)情況下,箱式布局中各組件之間沒(méi)有間距。如果需要添加間距,可以添加不可見(jiàn)的填充件。有三種填充件:Glue:膠水,調(diào)整容器大小時(shí),組件不變,膠水變化來(lái)維持;Strut:支柱,具有固定像素,容器調(diào)整時(shí)保持不變Rigid Area:硬區(qū)域,可設(shè)置水平和垂直兩個(gè)方向的,容器調(diào)整時(shí)保持不變?nèi)萜骷安季止芾砥魅萜骷安季止芾砥鱨布局管理器:lBoxLayout:lBox:提供了組件間間隔的靜態(tài)方法:createHorizontalGlue()createVerticalGlue()createHorizontalStrut(int width)createVerticalStrut(int height)createRigidArea(Dimension d)示例:支柱膠水膠水輔助類輔助類l在面板上作圖(JPanel):l基本思路:l創(chuàng)建一個(gè)有JPanel派生的類l覆蓋其中的paintComponent方法l關(guān)于paintComponent方法:l方法頭:public void paintComponent(Graphics g)l說(shuō)明:Graphics對(duì)象由Java運(yùn)行系統(tǒng)自動(dòng)創(chuàng)建Graphics類時(shí)可以在不同平臺(tái)上顯式圖形和圖像的一個(gè)抽象類輔助類輔助類l在面板上作圖(JPanel):lJava中的坐標(biāo)系統(tǒng):l原點(diǎn)在容器左上角l所有度量單位都是像素l可以使用適當(dāng)?shù)淖煮w、顏色、圖形進(jìn)行繪制輔助類輔助類lColor類:l顏色由紅、綠、藍(lán)三色構(gòu)成l構(gòu)造Color對(duì)象:l基本語(yǔ)法:Color clr=new Color(r,g,b);lColor類中定義了13種標(biāo)準(zhǔn)顏色常量l黑、藍(lán)、青、深灰、灰、綠、淺灰、洋紅、橙、粉、紅、白、黃lComponent類中統(tǒng)一定義了方法:lsetBackground(Color c)lsetForeground(Color c)輔助類輔助類lFont類和FontMetrics類:lFont類的對(duì)象的創(chuàng)建:lFont myfont=new Font(name,style,size);l說(shuō)明:字體名:ScanSerif、DialogInput、Serif等字型:Font.PLAIN、BOLD、ITALIC等,字型可以結(jié)合使用大小:整型量l例如:Font myFont=new Font(“ScanSerif”,Font.BOLD+Font.ITALIC,16);輔助類輔助類lFont類和FontMetrics類:lFontMetrics:用于計(jì)算字符串的精確長(zhǎng)度和寬度l屬性:Leading:文本行之間的距離Ascent:字符從基線到頂端的高度Descent:字符從基線到底端的距離Heigth:Leading+Ascent+Descent輔助類輔助類lFont類和FontMetrics類:lFontMetrics:l抽象類,要獲得其對(duì)象,調(diào)用Graphics類中的public FontMetrics getFontMetrics(Font f)lFontMetrics類中包含下列實(shí)例方法得到字體信息:public int getAscent()public int getDescent()public int getLeading()public int getHeight()public int stringwidth(String str)示例示例l編寫(xiě)程序,以紅色、ScanSerif、粗體斜體、20磅的規(guī)格居中顯式相關(guān)信息。例如,示例運(yùn)行界面為如下。輔助類輔助類l繪制幾何圖形(Graphics類提供):l繪制直線:drawLine(x1,y1,x2,y2);l繪制矩形:ldrawRect(x,y,w,h)lfillRect(x,y,w,h)ldrawRoundRect(x,y,w,h,aw,ah)lfillRoundRect(x,y,w,h,aw,ah)ldraw3DRect(x,y,w,h,raised)lfill3DRect(x,y,w,h,rasied)l繪制橢圓:(外切矩形的方式)ldrawOval(x,y,w,h)lfillOval(x,y,w,h)示例示例l編寫(xiě)程序,完成下列圖形f(x)=x*x。(提示:使用DrawPolyline連接各個(gè)點(diǎn))輔助類輔助類l繪制幾何圖形(Graphics類提供):l繪制圓?。海ㄒ彩歉鶕?jù)外切矩形繪制)ldrawArc(x,y,w,h,angle1,angle2)lfillArc(x,y,w,h,angle1,angle2)l示例:輔助類輔助類l繪制幾何圖形:(Graphics類提供)l繪制多邊形:l直接繪制:指定所有頂點(diǎn):drawPolygon(x,y,n)或fillPolygon(x,y,n)示例:int x=40,70,60,45,20;int y=20,40,80,45,60;g.drawPolygon(x,y,x.length);g.fillPolygon(x,y,x.length);輔助類輔助類l繪制幾何圖形:(Graphics類提供)l繪制多邊形:l使用Polygon對(duì)象繪制:示例:Polygon poly=new Polygon();poly.addPoint(20,30);poly.addPoint(40,40);poly.addPoint(50,50);g.drawPolygon(poly);示例示例l編寫(xiě)程序,使用圓餅圖顯示作業(yè)、平時(shí)測(cè)驗(yàn)、期中考試和期末考試占總成績(jī)的百分比。如下圖所示,假設(shè)作業(yè)占20%,用紅色顯示;測(cè)驗(yàn)10%,用綠色顯示;期中占30,用藍(lán)色表示;期末占40,用橙色顯示。事件處理事件處理l事件驅(qū)動(dòng)程序設(shè)計(jì):l已介紹的程序l是面向?qū)ο蟮?,但以過(guò)程的順序執(zhí)行l(wèi)可以用分支、循環(huán)控制執(zhí)行流程,但程序決定執(zhí)行次序l事件驅(qū)動(dòng):l激活一個(gè)事件就開(kāi)始執(zhí)行相應(yīng)代碼l事件和事件源:事件:程序發(fā)生了某些事情的信號(hào)(包括:外部用戶行為,如點(diǎn)擊鼠標(biāo)等;操作系統(tǒng)行為,如時(shí)鐘等)事件源:觸發(fā)事件的組件稱為事件源事件處理事件處理l事件驅(qū)動(dòng)程序設(shè)計(jì):l事件驅(qū)動(dòng):l一個(gè)事件是事件類的實(shí)例,事件類的根類是java.util.EventObject,常用事件層次關(guān)系:EventObjectAWTEventActionEventListSelectionEventComponentEventItemEventTextEventContainerEventFocusEventInputEventPaintEventWindowEventMouseEventKeyEvent事件處理事件處理l事件驅(qū)動(dòng)程序設(shè)計(jì):l事件驅(qū)動(dòng):l用戶行為、源對(duì)象和事件類型事件處理事件處理l事件驅(qū)動(dòng)程序設(shè)計(jì):l事件驅(qū)動(dòng):l用戶行為、源對(duì)象和事件類型說(shuō)明:ListSelectionEvent包含在javax.swing.event中,其余都在java.awt.event中如果一個(gè)組件能發(fā)生某個(gè)事件,那么這個(gè)組件的任何子類都可以發(fā)生同樣類型的事件l事件注冊(cè)、監(jiān)聽(tīng)和處理事件處理事件處理l事件驅(qū)動(dòng)程序設(shè)計(jì):l事件驅(qū)動(dòng):l事件注冊(cè)、監(jiān)聽(tīng)和處理一個(gè)事件源可以觸發(fā)多種事件,如果它注冊(cè)了某種事件的監(jiān)聽(tīng)器,那么這種事件就會(huì)被接收和處理事件源本身并不處理事件,而是委托給相應(yīng)的事件監(jiān)聽(tīng)器來(lái)處理,因此這種模式稱為委托模式委托模式事件、事件監(jiān)聽(tīng)器和監(jiān)聽(tīng)器方法:(參見(jiàn)后一頁(yè))事件處理事件處理l事件驅(qū)動(dòng)程序設(shè)計(jì):l事件驅(qū)動(dòng):l事件處理:(舉例:三個(gè)按鈕進(jìn)行顏色切換)實(shí)現(xiàn)方式:用內(nèi)部類實(shí)現(xiàn)監(jiān)聽(tīng)接口用容器類實(shí)現(xiàn)監(jiān)聽(tīng)接口定義專門(mén)的頂層類實(shí)現(xiàn)監(jiān)聽(tīng)接口采用事件適配器事件處理事件處理l事件驅(qū)動(dòng)程序設(shè)計(jì):l事件驅(qū)動(dòng):l關(guān)于適配器(續(xù))并不是所有的接口都有適配器(監(jiān)聽(tīng)器接口中只有一個(gè)方法時(shí),就不必提供Adapter)監(jiān)聽(tīng)器接口與適配器的對(duì)應(yīng)關(guān)系:一個(gè)組件注冊(cè)多個(gè)監(jiān)聽(tīng)器示例示例l編程實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器。(、)Swing用戶組件用戶組件lSwing組件主要包括:l文本處理、按鈕、標(biāo)簽、列表、pane、組合框、滾動(dòng)條、滾動(dòng)pane、菜單、表格、樹(shù)等l其中一些組件的圖示:Swing用戶組件用戶組件lSwing組件的圖示(續(xù)):Swing用戶界面組件用戶界面組件l邊框:lJComponent類中定義了setBorder(Border border)方法,用于為組件設(shè)置邊框l所有邊框類都實(shí)現(xiàn)了javax.swing.border.Border接口l邊框類的層次結(jié)構(gòu):Swing用戶界面組件用戶界面組件l邊框:l邊框類:lTitledBorder:實(shí)現(xiàn)帶標(biāo)題的子類title、titleColor、titleFont、titleJustification、titlePositionlBevelBorder:創(chuàng)建可凹凸的3D邊框lEtchedBorder:創(chuàng)建一個(gè)蝕刻型邊框lLineBorder:創(chuàng)建一個(gè)線型邊框lMatteBorder:創(chuàng)建一個(gè)用圖標(biāo)構(gòu)成的虛線型邊框lEmptyBorder:創(chuàng)建一個(gè)有邊框空間但沒(méi)有線的邊框Swing用戶界面組件用戶界面組件l按鈕組件:l所有的按鈕類都繼承自AbstractButton類Swing用戶界面組件用戶界面組件l按鈕組件:lJToggleButton與JButton的區(qū)別:l按鈕中可以顯示圖標(biāo),ImageIcon類表示圖標(biāo)lsetIcon(Icon icon):設(shè)置按鈕有效狀態(tài)下的圖標(biāo)lsetRolloverIcon(Icon icon):設(shè)置鼠標(biāo)移動(dòng)到按鈕區(qū)域的圖標(biāo)lsetPressedIcon(Icon icon):設(shè)置按下按鈕時(shí)的圖標(biāo)lsetDisabledIcon(Icon icon):設(shè)置按鈕無(wú)效狀態(tài)下的圖標(biāo)l文本組件:lJTextComponent 為所有 Swing 文本組件的根類JTextField JEditorPaneJTextAreaJTextPaneJPasswordFieldSwing用戶界面組件用戶界面組件文本組件JTextField 組件允許輸入或編輯單行文本造函數(shù)包括:JTextField()JTextField(Document doc,String text,int columns)JTextField(int columns)JTextField(String text)JTextField(String text,int columns)Container con=getContentPane();con.setLayout(new FlowLayout();JLabel jl=new JLabel(“文本域文本域”);con.add(jl);JTextField tf=new JTextField(20);con.add(tf);Swing用戶界面組件用戶界面組件文本組件:JTextArea 組件:用于接受來(lái)自用戶的多行文本,可用于實(shí)現(xiàn)可滾動(dòng)界面造函數(shù)創(chuàng)建:JTextArea()JTextArea(int rows,int cols)JTextArea(String text)JTextArea(String text,int rows,int cols)JTextArea(Document doc)JTextArea(Document doc,String text,int rows,int cols)JLabel jl=new JLabel(“文本區(qū)文本區(qū)”);con.add(jl);JTextArea ta=new JTextArea(5,10);con.add(ta);Swing用戶界面組件用戶界面組件l文本組件:lJPasswordField:l是JTextField類的子類。l主要用來(lái)輸入口令Swing用戶界面組件用戶界面組件Swing用戶組件用戶組件l選擇性輸入:l為了簡(jiǎn)化表單填寫(xiě)過(guò)程,通常為用戶提供多種可供選擇的選項(xiàng),而無(wú)需用戶寫(xiě)出他們的響應(yīng)。常用于選擇性輸入的組件有:l復(fù)選框復(fù)選框JCheckBoxl單選框單選框JRadioButtonl列表框列表框JListl組合框組合框JComboBoxSwing用戶組件用戶組件l復(fù)選框:l用于為用戶提供一組選項(xiàng)l具有下列構(gòu)造函數(shù):lJCheckBox()lJCheckBox(Icon icon)lJCheckBox(Icon icon,boolean selected)lJCheckBox(String text)lJCheckBox(String text,boolean selected)lJCheckBox(String text,Icon icon)lJCheckBox(String text,Icon icon,boolean selected)Swing用戶組件用戶組件l單選框:l允許用戶從多個(gè)選項(xiàng)中選擇其中一個(gè)lButtonGroup 用于在 Swing 中創(chuàng)建組l單選框的構(gòu)造函數(shù):lJRadioButton()lJRadioButton(Icon icon)lJRadioButton(Icon,boolean selected)lJRadioButton(String text)lJRadioButton(String text,boolean selected)lJRadioButton(String text,Icon icon)lJRadioButton(String text,Icon icon,boolean selected)JCheckBox和和JRadioButton示例示例import java.awt.*;import javax.swing.*;class Hobby extends JPanel JCheckBox c1=new JCheckBox(閱讀,false);JCheckBox c2=new JCheckBox(音樂(lè),false);JCheckBox c3=new JCheckBox(繪畫(huà),false);JRadioButton rad1=new JRadioButton(大專);JRadioButton rad2=new JRadioButton(本科);JRadioButton rad3=new JRadioButton(碩士);JLabel jl=new JLabel(您有什么愛(ài)好?);JLabel j2=new JLabel(您的最高學(xué)歷?);JButton exitbtn=new JButton(退出);public Hobby()setLayout(new GridLayout(9,1);add(jl);add(c1);add(c2);add(c3);add(j2);add(rad1);add(rad2);add(rad3);add(exitbtn);public class Hobbytest extends JFrame Hobbytest()super();getContentPane().add(new Hobby();setSize(300,200);setVisible(true);public static void main(String args)new Hobbytest();示例示例l模擬交通燈,讓用戶從紅、黃、綠三色燈中選擇模擬交通燈,讓用戶從紅、黃、綠三色燈中選擇一種。選擇后,相應(yīng)的燈會(huì)亮,而且只能亮一盞。一種。選擇后,相應(yīng)的燈會(huì)亮,而且只能亮一盞。初始時(shí),所有的燈都不亮。初始時(shí),所有的燈都不亮。Swing用戶組件用戶組件l列表框:l在可供選擇的選項(xiàng)很多時(shí),可向用戶呈現(xiàn)一個(gè)列表來(lái)供他們選擇lJList 組件依次排列項(xiàng)目列表,可進(jìn)行單選或多選lsetSelectionMode單/多選模式lListSelectionEvent事件/ListSelectionListener監(jiān)聽(tīng)器lJList組件既可顯示字符串,也可顯示圖標(biāo)lJList自身不支持鼠標(biāo)雙擊,而是利用事件處理機(jī)制解決鼠標(biāo)雙擊問(wèn)題的lMouseListenerSwing用戶組件用戶組件l列表框:l構(gòu)造函數(shù):lpublic JList():lpublic JList(ListModel dataModel):構(gòu)造一個(gè)列表,用它顯示指定模型中的元素 lpublic JList(Object listData):構(gòu)造一個(gè)列表以顯示指定數(shù)組listData的元素lJList 不支持滾動(dòng)。要啟用滾動(dòng),可使用下列代碼:JScrollPane myScrollPane=new JScrollPane();myScrollPane.getViewport().setView(dataList);String stars=安安東東尼尼奧奧.班班德德拉拉斯斯,來(lái)來(lái)昂昂納納多多.迪迪卡卡普普尼奧尼奧,桑德拉桑德拉.布洛克布洛克,休休.格蘭特格蘭特,朱莉亞朱莉亞.羅伯茨羅伯茨;JList moviestars=new JList(stars);Swing用戶組件用戶組件l列表框:l常用屬性:lselectedIndexlselectedIndices:int數(shù)組,表示選定的多項(xiàng)的序號(hào)lselectedValue:選定的第一個(gè)選定值lselectedValueslvisibleRowCount:列表不用滾動(dòng)可看到的行數(shù)Swing用戶組件用戶組件l組合框:l文本域和下拉列表的組合lJComboBox的構(gòu)造函數(shù):lpublic JComboBox():使用缺省數(shù)據(jù)模型創(chuàng)建對(duì)象使用缺省數(shù)據(jù)模型創(chuàng)建對(duì)象lpublic JComboBox(ComboBoxModel asModel):使用現(xiàn)有使用現(xiàn)有 ComboBoxModel 中的項(xiàng)目的組合框中的項(xiàng)目的組合框lpublic JComboBox(Object items):包含指定數(shù)包含指定數(shù)組元素的組合框組元素的組合框String names=弗弗雷雷德德里里克克.福福西西斯斯,約約翰翰.克克里里沙沙姆姆,瑪麗瑪麗.希金斯希金斯.克拉克克拉克,帕特麗夏帕特麗夏.康威爾康威爾;JComboBox authors=new JComboBox(names);Swing用戶組件用戶組件l組合框:l常用方法和屬性:l屬性:selectedIndex:int值,表示選定項(xiàng)的序號(hào)selectedItem:Object類型,表示選定項(xiàng)l方法:public void addItem(Object item)public void removeItem(Object obj)public Object getItemAt(int index)public void removeAllItems()示例示例l完成下列界面,并能:l輸入年齡后,焦點(diǎn)離開(kāi)時(shí)進(jìn)行合法性檢驗(yàn)l點(diǎn)擊確定按鈕時(shí),檢查是否每項(xiàng)都輸入完畢了Swing用戶組件用戶組件l頁(yè)標(biāo)簽面板(JTabbedPane):l可包含多個(gè)頁(yè)面,每個(gè)頁(yè)面與一個(gè)標(biāo)簽對(duì)應(yīng)l選擇特定標(biāo)簽就會(huì)顯式相應(yīng)頁(yè)面,并觸發(fā)事件ChangeEvent,由ChangeListener監(jiān)聽(tīng)器響應(yīng)l構(gòu)造函數(shù):lJTabbledPane()lJTabbledPane(int tabPlacement,int tabLayoutPolicy)tabPlacement位置(TOP/BOTTOM)tabLayoutPolicy布局(WRAP_TAB_LAYOUT/SCROLL_TABLE_LAYOUT)Swing用戶組件用戶組件l滾動(dòng)條JScrollBar:l構(gòu)造函數(shù):lpublic JScrollBar()lpublic JScrollBar(int orientation)lpublic JScrollBar(int orientation,int value,int visible,int minimum,int maximum)l說(shuō)明:lorientation選值可以是:JScrollBar.HORIZONTAL和VERTICALlvalue:設(shè)定初始值lvisible:滑動(dòng)塊的大小lminimum和maximum:最小和最大值Swing用戶組件用戶組件l滾動(dòng)條JScrollBar:l重要屬性和方法:lblockIncrement:點(diǎn)擊滾動(dòng)條的塊增加或塊減少的量lunitIncrement:點(diǎn)擊單位增加或減少的量lpublic void setValue(int):用于設(shè)置滾動(dòng)條當(dāng)前值l事件:lAdjustmentEventlAdjustmentListeneradjustmentValueChanged方法Swing用戶組件用戶組件l滾動(dòng)條JScrollBar:l說(shuō)明:lJava提供了不需編碼的自動(dòng)滾動(dòng)的組件:JScrollPane可將它看作特殊容器構(gòu)造函數(shù):public JScrollPane()public JScrollPane(Component view)public JScrollPane(Component view,int vsbPolicy,int hsbPolicy)說(shuō)明:vsbPolicy、hsbPolicy取值(需要時(shí)出現(xiàn),總是沒(méi)有,總是有滾動(dòng)條)示例示例l編寫(xiě)程序,利用三個(gè)水平滾動(dòng)條分別調(diào)節(jié)紅、綠、藍(lán)比例,以此設(shè)定一個(gè)顏色,并將它作為前景色,在面板上畫(huà)出一個(gè)該顏色的填充橢圓。l增加一組單選按鈕,分別選擇不同圖形:實(shí)心矩形、實(shí)心橢圓、空心矩形、空心橢圓,利用上述滾動(dòng)條調(diào)節(jié)得到的顏色,繪制不同的圖形Swing用戶組件用戶組件l菜單:l菜單的組織方式:l一個(gè)菜單條JMenuBar中包含多個(gè)菜單JMenul一個(gè)菜單JMenu中可以包含多個(gè)菜單項(xiàng)JMenuIteml而支持菜單的組件(如,JFrame、JDialog等)都包含方法setMenuBar(JMenuBar bar)來(lái)設(shè)置菜單條lJMenuItem有兩個(gè)子類:lJRadioButtonMenuItemlJCheckBoxMenuIteml用戶選擇菜單會(huì)觸發(fā)一個(gè)ActionEvent事件,可由監(jiān)聽(tīng)器ActionListener負(fù)責(zé)處理Swing用戶組件用戶組件l菜單:l在Java中實(shí)現(xiàn)菜單的步驟:l創(chuàng)建一個(gè)菜單欄,并建立它與框架的關(guān)聯(lián):JFrame fm=new JFrame();fm.setSize(200,300);fm.setVisible(true);JMenuBar jmb=new JMenuBar();fm.setMenuBar(jmb);l創(chuàng)建菜單:JMenu fileMenu=new JMenu(“File”);JMenu helpMenu=new JMenu(“Help”);/JMenu(String lable)jmb.add(fileMenu);jmb.add(helpMenu);Swing用戶組件用戶組件l菜單:l在Java中實(shí)現(xiàn)菜單的步驟:(續(xù))l創(chuàng)建菜單項(xiàng),并將它們加入到菜單中fileMenu.add(new JMenuItem(“New”);fileMenu.add(new JMenuItem(“Open”);fileMenu.addSeparator();/在菜單中增加一條分隔線fileMenu.add(new JMenuItem(“Print”);fileMenu.add(new JMenuItem(“Exit”);創(chuàng)建子菜單項(xiàng):將一個(gè)菜單嵌入到另一個(gè)菜單中JMenu softWareSubMenu=new JMenu(“Software”);JMenu hardWareSubMen=new JMenu(“Hardward”);helpMenu.add(softWareSubMenu);helpMenu.add(hardWareSubMenu);Swing用戶組件用戶組件l菜單:l在Java中實(shí)現(xiàn)菜單的步驟:(續(xù))l創(chuàng)建菜單項(xiàng),并將它們加入到菜單中創(chuàng)建復(fù)選框菜單項(xiàng):helpMenu.add(new JCheckBoxMenuItem(“Check it”);創(chuàng)建單選按鈕菜單項(xiàng):(與JCheckBoxMenuItem類似)l對(duì)于菜單項(xiàng)產(chǎn)生的ActionEvent事件,必須實(shí)現(xiàn)處理器public void actionPerformed(ActionEvent e)String actionCommand=e.getActionCommand();if(e.getSource()instanceof JMenuItem)if(“New”.equals(actionCommand)/Swing用戶組件用戶組件l菜單:l在Java中實(shí)現(xiàn)菜單的步驟:(續(xù))l設(shè)置菜單的圖標(biāo)、熱鍵和快捷鍵:JMenuItem及其子類包含下列方法:setIcon(ImageIcon);/設(shè)置圖標(biāo)setMnemonic(char);/設(shè)置ALT+Char熱鍵setAccelerator(KeyStroke);/設(shè)置快捷鍵例如:JMenuItem jopen=new JMenuItem(“Open”);jopen.setIcon(new ImageIcon(“images/new.gif”);jopen.setMnemonic(O);jopen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,ActionEvent.CTRL_MASK);/Ctrl+OSwing用戶組件用戶組件l菜單:lSwing還包含JPopupMenu:l用戶按下或松開(kāi)鼠標(biāo)右鍵,觸發(fā)MouseEvent事件l此時(shí)該事件對(duì)象的isPopupTrigger()方法返回truel如果希望顯式彈出式菜單,只需調(diào)用JPopupMenu中的show()方法即可Swing用戶組件用戶組件l組件觀感l(wèi)Swing組件提供了可插把式觀感l(wèi)默認(rèn)情況下,Swing程序使用Metal觀感l(wèi)改變的方法有:lJdk/jre/lib目錄下提供一個(gè)swing.properties文件,其中把屬性swing.defaultlaf設(shè)成你想要的觀感名可提供的觀感包括:javax.swing.plaf.metal.MetalLookAndFeelcom.sun.java.swing.plaf.motif.MotifLookAndFeelcom.sun.java.swing.plaf.windows.WindowsLookAndFeelSwing用戶組件用戶組件l組件觀感l(wèi)改變的方法有(續(xù)):l動(dòng)態(tài)改變觀感,可調(diào)用靜態(tài)的UIManager.setLookAndFeel方法,并給出想要的觀感的名字;接著調(diào)用SwingUtilities.updateComponentTreeUI來(lái)刷新全部組件Swing用戶組件用戶組件l對(duì)話框JDialogl默認(rèn)布局管理器:BorderLayoutl構(gòu)造方法:lJDialog(Frame owner,String title,boolean modal)l說(shuō)明:modal是否為模態(tài)對(duì)話框l對(duì)話框關(guān)閉時(shí),通常不需要結(jié)束整個(gè)應(yīng)用程序,因此需要調(diào)用JDialog的disponse()方法,釋放對(duì)話框所占用資源Swing用戶組件用戶組件l文件對(duì)話框JFileChooserl包含兩個(gè)靜態(tài)方法:lshowOpenDialog():顯式用于打開(kāi)文件的對(duì)話框lshowSaveDialog():顯式用于保存文件的對(duì)話框l使用示例:文本編輯器模仿Swing用戶組件用戶組件l消息框:lJOptionPane類中包含一系列showXXXDialog()的靜態(tài)方法,可用來(lái)生成各種類型的消息框lshowMessageDialog():顯示包含提示信息的對(duì)話框lshowOptionDialog():顯示讓用戶選擇可選項(xiàng)的對(duì)話框lshowInputDialog()lshowConfirmDialog():顯示讓用戶選Yes/No的對(duì)話框

注意事項(xiàng)

本文(第9章圖形用戶界面)為本站會(huì)員(仙***)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

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




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

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

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


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