第9章圖形用戶界面
《第9章圖形用戶界面》由會員分享,可在線閱讀,更多相關(guān)《第9章圖形用戶界面(78頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、圖形用戶界面圖形用戶界面(GUI)主要內(nèi)容主要內(nèi)容lGUI概述lJava圖形APIl容器及布局管理l輔助類l事件處理lSwing用戶界面組件GUI概述概述lGUIGraphic User Interfacel構(gòu)成:l抽象窗口工具集AWT(Abstract Window Toolkit)對運行的各平臺,組件通過各自的代理映射成平臺特定組件適用于簡單的GUI程序,對復(fù)雜的GUI項目不適用容易發(fā)生平臺特定故障重型組件lSwing組件庫大多數(shù)組件直接使用Java代碼編寫更少依賴目標(biāo)機器上的平臺、本地資源輕型組件lApplet單獨介紹GUI概述概述lGUIGraphic User Interfacel說
2、明:lSwing組件不能取代AWT的全部類能替代AWT的用戶界面組件(Button、TextField等)輔助類(Graphics、Color、Font、FontMetrics、LayoutManager)保持不變使用AWT的事件模型l課程介紹方式:AWT中仍被Swing使用的內(nèi)容:容器和LayoutManager事件模型輔助類的使用繪圖Swing組件基本用法各組件展開簡介Java圖形圖形APIlJava圖形程序設(shè)計所用類的層次結(jié)構(gòu)包java.awt中的類包javax.swing中的swing組件Java圖形圖形APIlJava圖形程序設(shè)計所用類的層次結(jié)構(gòu)Java圖形圖形APIlJava圖形程
3、序設(shè)計所用類的層次結(jié)構(gòu)l說明:lComponent:所有用戶界面類的父類lContainer:對組件分組的類lJComponent:所有輕型Swing組件的父類l圖形類:l容器類l組件類l輔助類容器及布局管理容器及布局管理lContainer類:抽象類lWindow、Frame、JFramel不依賴于其他容器而獨立存在的容器l使用步驟:l構(gòu)造函數(shù)創(chuàng)建實例l激活容器的add方法追加其他組件l激活容器的setLayout方法進(jìn)行布局設(shè)置l激活setSize方法設(shè)置容器大小l激活setVisible(true)方法使其可見lPanel、Applet、JAppletl不能單獨存在,只能存在于其他容器中
4、l用法類似于獨立容器,只是必須追加到獨立容器中容器及布局管理器容器及布局管理器l容器使用示例:l說明:以JFrame為例l居中問題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
5、);l退出:例如:jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);容器及布局管理容器及布局管理l布局管理器l說明:l組件在容器中的位置和尺寸是由布局管理器決定的l所有容器都會引用一個布局管理器實例,通過它進(jìn)行組件的布局管理l默認(rèn)布局管理器:每個容器創(chuàng)建后都有默認(rèn)布局管理器Window、Frame、Dialog、JFrame:BorderLayoutPanel、Applet、JApplet:FlowLayoutl布局管理器設(shè)置:setLayout(new FlowLayout()更改布局管理器setLayout(null)取消布局管理器setL
6、ocationsetSizesetBounds容器及布局管理器容器及布局管理器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)
7、l其他方法:setAlignmentlayoutContainer(Container)重新布局l示例:容器及布局管理器容器及布局管理器l布局管理器:lBorderLayout:邊界布局管理器l將容器分成東、南、西、北、中5個區(qū)l構(gòu)造函數(shù):BorderLayout()BorderLayout(int hgap,int vgap)l使用該布局管理,添加組件時,可指定區(qū)域void add(Component comp,Object constraints)其中constraints取值:BorderLayout.NORTH、BorderLayout.SOUTH、BorderLayout.EAST、
8、BorderLayout.WEST、BorderLayout.CENTER容器及布局管理器容器及布局管理器l布局管理器:lGridLayout:網(wǎng)格布局管理器l將容器分隔成若干行、列,組件被填充到每個網(wǎng)格中l(wèi)構(gòu)造函數(shù):GridLayout()GridLayout(int rows,int cols)GridLayout(int rows,int cols,int hgap,int vgap)l容器添加組件時可以指定網(wǎng)格序號l示例:如右圖所示的計算器容器及布局管理器容器及布局管理器l布局管理器:lCardLayout:卡片布局管理器l將容器看作一系列卡片,在任意時刻只有一張卡片可見l構(gòu)造函數(shù):C
9、ardLayout()CardLayout(int hgap,int vgap)l其他方法:向容器中追加組件時,需要指定組件所在卡片的名稱void add(Component comp,Object constraints)其中constraints為String,指定卡片名show(Container parent,String name)顯示具體哪張卡片容器及布局管理器容器及布局管理器l布局管理器:lGridBagLayout:網(wǎng)格包布局管理器l在GridLayout基礎(chǔ)上提供更為復(fù)雜的布局。允許各組件大小各不相同,允許單個組件所在顯示區(qū)占多個網(wǎng)格l使用步驟:創(chuàng)建GridBagLayout
10、布局管理器的一個實例GridBagLayout layout=new GridBagLayout();container.setLayout(layout);創(chuàng)建一個GridBagContraints實例GridBagContraints constraints=new GridBagContraints();為要添加的某個組件設(shè)置GridBagContraints的各種屬性:constraints.gridx=1;constraints.gridy=1;constraints.gridwidth=1;constraints.gridheight=1;通知布局管理器放置組件時的GridBagC
11、ontraints信息layout.setConstraints(comp,contraints);向容器中追加組件:container.add(comp);重復(fù)上述后三步動作容器及布局管理器容器及布局管理器l布局管理器:lGridBagLayout:網(wǎng)格包布局管理器l關(guān)于GridBagContraints:包含了如何把一個組件添加到容器中的布局信息重要屬性:gridx和gridy:指定組件顯示區(qū)域左上角的列和行g(shù)ridWidth和gridHeight:指定組件顯示區(qū)域占據(jù)的列數(shù)和行數(shù)fill:組件顯示區(qū)域大于組件要求的大小,決定如何改變組件GridBagConstraints.NONE默認(rèn)G
12、ridBagConstraints.HORIZONAL水平方向填充GridBagConstraints.VERTICAL垂直方向填充GridBagConstraints.BOTH容器及布局管理器容器及布局管理器l布局管理器:lBoxLayout:通常與Box容器聯(lián)合使用lBox:具有以下靜態(tài)工廠方法:createHorizontalBox():生成Box對象,采用水平BoxLayout,組件沿水平方向放置createVerticalBox():默認(rèn)情況下,箱式布局中各組件之間沒有間距。如果需要添加間距,可以添加不可見的填充件。有三種填充件:Glue:膠水,調(diào)整容器大小時,組件不變,膠水變化來維
13、持;Strut:支柱,具有固定像素,容器調(diào)整時保持不變Rigid Area:硬區(qū)域,可設(shè)置水平和垂直兩個方向的,容器調(diào)整時保持不變?nèi)萜骷安季止芾砥魅萜骷安季止芾砥鱨布局管理器:lBoxLayout:lBox:提供了組件間間隔的靜態(tài)方法:createHorizontalGlue()createVerticalGlue()createHorizontalStrut(int width)createVerticalStrut(int height)createRigidArea(Dimension d)示例:支柱膠水膠水輔助類輔助類l在面板上作圖(JPanel):l基本思路:l創(chuàng)建一個有JPanel
14、派生的類l覆蓋其中的paintComponent方法l關(guān)于paintComponent方法:l方法頭:public void paintComponent(Graphics g)l說明:Graphics對象由Java運行系統(tǒng)自動創(chuàng)建Graphics類時可以在不同平臺上顯式圖形和圖像的一個抽象類輔助類輔助類l在面板上作圖(JPanel):lJava中的坐標(biāo)系統(tǒng):l原點在容器左上角l所有度量單位都是像素l可以使用適當(dāng)?shù)淖煮w、顏色、圖形進(jìn)行繪制輔助類輔助類lColor類:l顏色由紅、綠、藍(lán)三色構(gòu)成l構(gòu)造Color對象:l基本語法:Color clr=new Color(r,g,b);lColor類中
15、定義了13種標(biāo)準(zhǔn)顏色常量l黑、藍(lán)、青、深灰、灰、綠、淺灰、洋紅、橙、粉、紅、白、黃lComponent類中統(tǒng)一定義了方法:lsetBackground(Color c)lsetForeground(Color c)輔助類輔助類lFont類和FontMetrics類:lFont類的對象的創(chuàng)建:lFont myfont=new Font(name,style,size);l說明:字體名:ScanSerif、DialogInput、Serif等字型:Font.PLAIN、BOLD、ITALIC等,字型可以結(jié)合使用大?。赫土縧例如:Font myFont=new Font(“ScanSerif”,F
16、ont.BOLD+Font.ITALIC,16);輔助類輔助類lFont類和FontMetrics類:lFontMetrics:用于計算字符串的精確長度和寬度l屬性:Leading:文本行之間的距離Ascent:字符從基線到頂端的高度Descent:字符從基線到底端的距離Heigth:Leading+Ascent+Descent輔助類輔助類lFont類和FontMetrics類:lFontMetrics:l抽象類,要獲得其對象,調(diào)用Graphics類中的public FontMetrics getFontMetrics(Font f)lFontMetrics類中包含下列實例方法得到字體信息:p
17、ublic int getAscent()public int getDescent()public int getLeading()public int getHeight()public int stringwidth(String str)示例示例l編寫程序,以紅色、ScanSerif、粗體斜體、20磅的規(guī)格居中顯式相關(guā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,
18、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編寫程序,完成下列圖形f(x)=x*x。(提示:使用DrawPolyline連接各個點)輔助類輔助類l繪制幾何圖形(Graphics類提供):l繪制圓?。海ㄒ彩歉鶕?jù)外切矩形繪制)ldrawArc(x,y,w,h,angle1,angle2)lfillArc(x,y,w,h,angle1,angle2)l示例:
19、輔助類輔助類l繪制幾何圖形:(Graphics類提供)l繪制多邊形:l直接繪制:指定所有頂點: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對象繪制:示例:Polygon poly=new Polygon();poly.addPoint(20,30);poly.addPoint(4
20、0,40);poly.addPoint(50,50);g.drawPolygon(poly);示例示例l編寫程序,使用圓餅圖顯示作業(yè)、平時測驗、期中考試和期末考試占總成績的百分比。如下圖所示,假設(shè)作業(yè)占20%,用紅色顯示;測驗10%,用綠色顯示;期中占30,用藍(lán)色表示;期末占40,用橙色顯示。事件處理事件處理l事件驅(qū)動程序設(shè)計:l已介紹的程序l是面向?qū)ο蟮?,但以過程的順序執(zhí)行l(wèi)可以用分支、循環(huán)控制執(zhí)行流程,但程序決定執(zhí)行次序l事件驅(qū)動:l激活一個事件就開始執(zhí)行相應(yīng)代碼l事件和事件源:事件:程序發(fā)生了某些事情的信號(包括:外部用戶行為,如點擊鼠標(biāo)等;操作系統(tǒng)行為,如時鐘等)事件源:觸發(fā)事件的組件
21、稱為事件源事件處理事件處理l事件驅(qū)動程序設(shè)計:l事件驅(qū)動:l一個事件是事件類的實例,事件類的根類是java.util.EventObject,常用事件層次關(guān)系:EventObjectAWTEventActionEventListSelectionEventComponentEventItemEventTextEventContainerEventFocusEventInputEventPaintEventWindowEventMouseEventKeyEvent事件處理事件處理l事件驅(qū)動程序設(shè)計:l事件驅(qū)動:l用戶行為、源對象和事件類型事件處理事件處理l事件驅(qū)動程序設(shè)計:l事件驅(qū)動:l用戶行為
22、、源對象和事件類型說明:ListSelectionEvent包含在javax.swing.event中,其余都在java.awt.event中如果一個組件能發(fā)生某個事件,那么這個組件的任何子類都可以發(fā)生同樣類型的事件l事件注冊、監(jiān)聽和處理事件處理事件處理l事件驅(qū)動程序設(shè)計:l事件驅(qū)動:l事件注冊、監(jiān)聽和處理一個事件源可以觸發(fā)多種事件,如果它注冊了某種事件的監(jiān)聽器,那么這種事件就會被接收和處理事件源本身并不處理事件,而是委托給相應(yīng)的事件監(jiān)聽器來處理,因此這種模式稱為委托模式委托模式事件、事件監(jiān)聽器和監(jiān)聽器方法:(參見后一頁)事件處理事件處理l事件驅(qū)動程序設(shè)計:l事件驅(qū)動:l事件處理:(舉例:三個
23、按鈕進(jìn)行顏色切換)實現(xiàn)方式:用內(nèi)部類實現(xiàn)監(jiān)聽接口用容器類實現(xiàn)監(jiān)聽接口定義專門的頂層類實現(xiàn)監(jiān)聽接口采用事件適配器事件處理事件處理l事件驅(qū)動程序設(shè)計:l事件驅(qū)動:l關(guān)于適配器(續(xù))并不是所有的接口都有適配器(監(jiān)聽器接口中只有一個方法時,就不必提供Adapter)監(jiān)聽器接口與適配器的對應(yīng)關(guān)系:一個組件注冊多個監(jiān)聽器示例示例l編程實現(xiàn)簡單的計算器。(、)Swing用戶組件用戶組件lSwing組件主要包括:l文本處理、按鈕、標(biāo)簽、列表、pane、組合框、滾動條、滾動pane、菜單、表格、樹等l其中一些組件的圖示:Swing用戶組件用戶組件lSwing組件的圖示(續(xù)):Swing用戶界面組件用戶界面組件l
24、邊框:lJComponent類中定義了setBorder(Border border)方法,用于為組件設(shè)置邊框l所有邊框類都實現(xiàn)了javax.swing.border.Border接口l邊框類的層次結(jié)構(gòu):Swing用戶界面組件用戶界面組件l邊框:l邊框類:lTitledBorder:實現(xiàn)帶標(biāo)題的子類title、titleColor、titleFont、titleJustification、titlePositionlBevelBorder:創(chuàng)建可凹凸的3D邊框lEtchedBorder:創(chuàng)建一個蝕刻型邊框lLineBorder:創(chuàng)建一個線型邊框lMatteBorder:創(chuàng)建一個用圖標(biāo)構(gòu)成的虛線
25、型邊框lEmptyBorder:創(chuàng)建一個有邊框空間但沒有線的邊框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)移動到按鈕區(qū)域的圖標(biāo)lsetPressedIcon(Icon icon):設(shè)置按下按鈕時的圖標(biāo)lsetDisabledIcon(Icon icon):設(shè)置按鈕無效
26、狀態(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
27、 con=getContentPane();con.setLayout(new FlowLayout();JLabel jl=new JLabel(“文本域文本域”);con.add(jl);JTextField tf=new JTextField(20);con.add(tf);Swing用戶界面組件用戶界面組件文本組件:JTextArea 組件:用于接受來自用戶的多行文本,可用于實現(xiàn)可滾動界面造函數(shù)創(chuàng)建:JTextArea()JTextArea(int rows,int cols)JTextArea(String text)JTextArea(String text,int rows,in
28、t 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主要用來輸入口令Swing用戶界面組件用戶界面組件Swing用戶組件用戶組件l選擇性輸入:l為了簡化表單填寫過程,通常為用戶提供多種可供選擇的選
29、項,而無需用戶寫出他們的響應(yīng)。常用于選擇性輸入的組件有:l復(fù)選框復(fù)選框JCheckBoxl單選框單選框JRadioButtonl列表框列表框JListl組合框組合框JComboBoxSwing用戶組件用戶組件l復(fù)選框:l用于為用戶提供一組選項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)lJ
30、CheckBox(String text,Icon icon,boolean selected)Swing用戶組件用戶組件l單選框:l允許用戶從多個選項中選擇其中一個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)
31、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(音樂,false);JCheckBox c3=new JCheckBox(繪畫,false);JRadioButton rad1=new JRadioButton(大專);JRad
32、ioButton rad2=new JRadioButton(本科);JRadioButton rad3=new JRadioButton(碩士);JLabel jl=new JLabel(您有什么愛好?);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
33、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)的燈會亮,而且只能亮一盞。一種。選擇后,相應(yīng)的燈會亮,而且只能亮一盞。初始時,所有的燈都不亮。初始時,所有的燈都不亮。Swing用戶組件用戶組件l列表
34、框:l在可供選擇的選項很多時,可向用戶呈現(xiàn)一個列表來供他們選擇lJList 組件依次排列項目列表,可進(jìn)行單選或多選lsetSelectionMode單/多選模式lListSelectionEvent事件/ListSelectionListener監(jiān)聽器lJList組件既可顯示字符串,也可顯示圖標(biāo)lJList自身不支持鼠標(biāo)雙擊,而是利用事件處理機制解決鼠標(biāo)雙擊問題的lMouseListenerSwing用戶組件用戶組件l列表框:l構(gòu)造函數(shù):lpublic JList():lpublic JList(ListModel dataModel):構(gòu)造一個列表,用它顯示指定模型中的元素 lpublic
35、JList(Object listData):構(gòu)造一個列表以顯示指定數(shù)組listData的元素lJList 不支持滾動。要啟用滾動,可使用下列代碼:JScrollPane myScrollPane=new JScrollPane();myScrollPane.getViewport().setView(dataList);String stars=安安東東尼尼奧奧.班班德德拉拉斯斯,來來昂昂納納多多.迪迪卡卡普普尼奧尼奧,桑德拉桑德拉.布洛克布洛克,休休.格蘭特格蘭特,朱莉亞朱莉亞.羅伯茨羅伯茨;JList moviestars=new JList(stars);Swing用戶組件用戶組件l列
36、表框:l常用屬性:lselectedIndexlselectedIndices:int數(shù)組,表示選定的多項的序號lselectedValue:選定的第一個選定值lselectedValueslvisibleRowCount:列表不用滾動可看到的行數(shù)Swing用戶組件用戶組件l組合框:l文本域和下拉列表的組合lJComboBox的構(gòu)造函數(shù):lpublic JComboBox():使用缺省數(shù)據(jù)模型創(chuàng)建對象使用缺省數(shù)據(jù)模型創(chuàng)建對象lpublic JComboBox(ComboBoxModel asModel):使用現(xiàn)有使用現(xiàn)有 ComboBoxModel 中的項目的組合框中的項目的組合框lpubli
37、c JComboBox(Object items):包含指定數(shù)包含指定數(shù)組元素的組合框組元素的組合框String names=弗弗雷雷德德里里克克.福福西西斯斯,約約翰翰.克克里里沙沙姆姆,瑪麗瑪麗.希金斯希金斯.克拉克克拉克,帕特麗夏帕特麗夏.康威爾康威爾;JComboBox authors=new JComboBox(names);Swing用戶組件用戶組件l組合框:l常用方法和屬性:l屬性:selectedIndex:int值,表示選定項的序號selectedItem:Object類型,表示選定項l方法:public void addItem(Object item)public voi
38、d removeItem(Object obj)public Object getItemAt(int index)public void removeAllItems()示例示例l完成下列界面,并能:l輸入年齡后,焦點離開時進(jìn)行合法性檢驗l點擊確定按鈕時,檢查是否每項都輸入完畢了Swing用戶組件用戶組件l頁標(biāo)簽面板(JTabbedPane):l可包含多個頁面,每個頁面與一個標(biāo)簽對應(yīng)l選擇特定標(biāo)簽就會顯式相應(yīng)頁面,并觸發(fā)事件ChangeEvent,由ChangeListener監(jiān)聽器響應(yīng)l構(gòu)造函數(shù):lJTabbledPane()lJTabbledPane(int tabPlacement,i
39、nt tabLayoutPolicy)tabPlacement位置(TOP/BOTTOM)tabLayoutPolicy布局(WRAP_TAB_LAYOUT/SCROLL_TABLE_LAYOUT)Swing用戶組件用戶組件l滾動條JScrollBar:l構(gòu)造函數(shù):lpublic JScrollBar()lpublic JScrollBar(int orientation)lpublic JScrollBar(int orientation,int value,int visible,int minimum,int maximum)l說明:lorientation選值可以是:JScrollBa
40、r.HORIZONTAL和VERTICALlvalue:設(shè)定初始值lvisible:滑動塊的大小lminimum和maximum:最小和最大值Swing用戶組件用戶組件l滾動條JScrollBar:l重要屬性和方法:lblockIncrement:點擊滾動條的塊增加或塊減少的量lunitIncrement:點擊單位增加或減少的量lpublic void setValue(int):用于設(shè)置滾動條當(dāng)前值l事件:lAdjustmentEventlAdjustmentListeneradjustmentValueChanged方法Swing用戶組件用戶組件l滾動條JScrollBar:l說明:lJa
41、va提供了不需編碼的自動滾動的組件:JScrollPane可將它看作特殊容器構(gòu)造函數(shù):public JScrollPane()public JScrollPane(Component view)public JScrollPane(Component view,int vsbPolicy,int hsbPolicy)說明:vsbPolicy、hsbPolicy取值(需要時出現(xiàn),總是沒有,總是有滾動條)示例示例l編寫程序,利用三個水平滾動條分別調(diào)節(jié)紅、綠、藍(lán)比例,以此設(shè)定一個顏色,并將它作為前景色,在面板上畫出一個該顏色的填充橢圓。l增加一組單選按鈕,分別選擇不同圖形:實心矩形、實心橢圓、空心矩
42、形、空心橢圓,利用上述滾動條調(diào)節(jié)得到的顏色,繪制不同的圖形Swing用戶組件用戶組件l菜單:l菜單的組織方式:l一個菜單條JMenuBar中包含多個菜單JMenul一個菜單JMenu中可以包含多個菜單項JMenuIteml而支持菜單的組件(如,JFrame、JDialog等)都包含方法setMenuBar(JMenuBar bar)來設(shè)置菜單條lJMenuItem有兩個子類:lJRadioButtonMenuItemlJCheckBoxMenuIteml用戶選擇菜單會觸發(fā)一個ActionEvent事件,可由監(jiān)聽器ActionListener負(fù)責(zé)處理Swing用戶組件用戶組件l菜單:l在Java
43、中實現(xiàn)菜單的步驟:l創(chuàng)建一個菜單欄,并建立它與框架的關(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中實現(xiàn)菜單的步驟:(
44、續(xù))l創(chuà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)建子菜單項:將一個菜單嵌入到另一個菜單中JMenu softWareSubMenu=new JMenu(“Software”);JMenu hardWareSubMen=new JMenu(“Hardward
45、”);helpMenu.add(softWareSubMenu);helpMenu.add(hardWareSubMenu);Swing用戶組件用戶組件l菜單:l在Java中實現(xiàn)菜單的步驟:(續(xù))l創(chuàng)建菜單項,并將它們加入到菜單中創(chuàng)建復(fù)選框菜單項:helpMenu.add(new JCheckBoxMenuItem(“Check it”);創(chuàng)建單選按鈕菜單項:(與JCheckBoxMenuItem類似)l對于菜單項產(chǎn)生的ActionEvent事件,必須實現(xiàn)處理器public void actionPerformed(ActionEvent e)String actionCommand=e.ge
46、tActionCommand();if(e.getSource()instanceof JMenuItem)if(“New”.equals(actionCommand)/Swing用戶組件用戶組件l菜單:l在Java中實現(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(ne
47、w ImageIcon(“images/new.gif”);jopen.setMnemonic(O);jopen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,ActionEvent.CTRL_MASK);/Ctrl+OSwing用戶組件用戶組件l菜單:lSwing還包含JPopupMenu:l用戶按下或松開鼠標(biāo)右鍵,觸發(fā)MouseEvent事件l此時該事件對象的isPopupTrigger()方法返回truel如果希望顯式彈出式菜單,只需調(diào)用JPopupMenu中的show()方法即可Swing用戶組件用戶組件l組件觀感l(wèi)Swing組
48、件提供了可插把式觀感l(wèi)默認(rèn)情況下,Swing程序使用Metal觀感l(wèi)改變的方法有:lJdk/jre/lib目錄下提供一個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動態(tài)改變觀感,可調(diào)用靜態(tài)的UIMa
49、nager.setLookAndFeel方法,并給出想要的觀感的名字;接著調(diào)用SwingUtilities.updateComponentTreeUI來刷新全部組件Swing用戶組件用戶組件l對話框JDialogl默認(rèn)布局管理器:BorderLayoutl構(gòu)造方法:lJDialog(Frame owner,String title,boolean modal)l說明:modal是否為模態(tài)對話框l對話框關(guān)閉時,通常不需要結(jié)束整個應(yīng)用程序,因此需要調(diào)用JDialog的disponse()方法,釋放對話框所占用資源Swing用戶組件用戶組件l文件對話框JFileChooserl包含兩個靜態(tài)方法:lshowOpenDialog():顯式用于打開文件的對話框lshowSaveDialog():顯式用于保存文件的對話框l使用示例:文本編輯器模仿Swing用戶組件用戶組件l消息框:lJOptionPane類中包含一系列showXXXDialog()的靜態(tài)方法,可用來生成各種類型的消息框lshowMessageDialog():顯示包含提示信息的對話框lshowOptionDialog():顯示讓用戶選擇可選項的對話框lshowInputDialog()lshowConfirmDialog():顯示讓用戶選Yes/No的對話框
- 溫馨提示:
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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案