第10章Swing套件的容器元件与版面配置.ppt

上传人:s****8 文档编号:69239415 上传时间:2022-12-31 格式:PPT 页数:54 大小:798KB
返回 下载 相关 举报
第10章Swing套件的容器元件与版面配置.ppt_第1页
第1页 / 共54页
第10章Swing套件的容器元件与版面配置.ppt_第2页
第2页 / 共54页
点击查看更多>>
资源描述

《第10章Swing套件的容器元件与版面配置.ppt》由会员分享,可在线阅读,更多相关《第10章Swing套件的容器元件与版面配置.ppt(54页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第10章 Swing套件的容器元件與版面配置n n10-1 Swing套件的基礎n n10-2 Swing的最上層容器類別n n10-3 Swing的中間層容器類別n n10-4 Swing元件的版面配置管理員n n10-5 Swing元件的框線10-1 Swing套件的基礎n n10-1-1 Swing套件是什麼n n10-1-2 Swing應用程式架構n n10-1-3 事件改編者Event Adapter10-1 Swing套件的基礎n nSwing套件屬於Java平台JFC(Java Foundation Classes)的一部分,JFC可以建立GUI介面的Java應用程式,在本書稱為

2、Swing應用程式,使用的是JFC的Swing套件提供的各種元件。例如:按鈕、核取方塊、選項鈕和文字方塊等。例如:按鈕、核取方塊、選項鈕和文字方塊等。10-1-1 Swing套件是什麼n nSwingSwing套件的類別是定義套件的類別是定義在名為在名為javax.swingjavax.swing套件,套件,第第9 9章介紹的章介紹的AWTAWT元件屬於元件屬於JDK 1.0JDK 1.0和和1.11.1版的版的GUIGUI元元件,在件,在Java 2Java 2平台提供全平台提供全新的新的SwingSwing元件來取代元件來取代AWTAWT,大部分的,大部分的SwingSwing元元件都是繼

3、承自件都是繼承自JComponentJComponent,其元件名,其元件名稱都是以稱都是以”J”J”字母開頭,字母開頭,如右圖所示:如右圖所示:10-1-2 Swing應用程式架構n nSwingSwing應用程式的架構像是在一個大盒子中放入應用程式的架構像是在一個大盒子中放入多個小盒子,首先將多個小盒子,首先將SwingSwing套件的各種套件的各種GUIGUI元件元件JButtonJButton和和JLabelJLabel新增到中間層容器元件。例如:新增到中間層容器元件。例如:JPanelJPanel,然後將,然後將JPanelJPanel新增到最上層容器類別新增到最上層容器類別JFra

4、meJFrame,JFrameJFrame是一種擁有標題列的視窗元件,是一種擁有標題列的視窗元件,如下圖所示:如下圖所示:10-1-3 事件改編者Event Adapter-說明n n在AWT的java.awt.event套件提供XXXAdapter改編者類別,如下表所示:10-1-3 事件改編者Event Adapter-範例n n例如:在主程式main()使用WindowListener事件傾聽者,這個介面一共有7個方法,但是我們只實作windowClosing()一個方法,如下所示:app.addWindowListener(newapp.addWindowListener(new Wi

5、ndowAdapterWindowAdapter()()public void public void windowClosing(WindowEventwindowClosing(WindowEvent evtevt)System.exit(0);System.exit(0);););10-2 Swing的最上層容器類別n n10-2-1 JFrame最上層容器類別n n10-2-2 JApplet最上層容器類別n n10-2-3 JDialog最上層容器類別10-2 Swing的最上層容器類別-類別架構n n在在JavaJava的的SwingSwing應用程式需要使用一個最上層容應用程式需

6、要使用一個最上層容器類別作為容器類別架構的根類別,器類別作為容器類別架構的根類別,SwingSwing的的GUIGUI元件需要新增至容器(元件需要新增至容器(ContainerContainer)類)類別架構,才能讓別架構,才能讓GUIGUI元件在螢幕上顯示,如下圖元件在螢幕上顯示,如下圖所示:所示:10-2 Swing的最上層容器類別-說明n nSwingSwing應用程式至少需要擁有一個應用程式至少需要擁有一個JFrameJFrame容器類容器類別架構,也就是一個擁有標題列的主視窗。別架構,也就是一個擁有標題列的主視窗。n n應用程式對話方塊可以建立以應用程式對話方塊可以建立以JDialo

7、gJDialog為最上層類為最上層類別的容器類別架構。例如:別的容器類別架構。例如:JavaJava應用程式擁有應用程式擁有1 1個主視窗和個主視窗和2 2個對話方塊,也就是建立個對話方塊,也就是建立1 1個以個以JFrameJFrame和和2 2個以個以JDialogJDialog為根類別的容器類別架為根類別的容器類別架構。構。n n在在Java AppletJava Applet也可以使用也可以使用SwingSwing元件,這是建元件,這是建立以立以JAppletJApplet為根類別的容器類別架構,如此即可為根類別的容器類別架構,如此即可在在Java AppletJava Applet顯

8、示顯示SwingSwing的的GUIGUI元件。元件。10-2-1 JFrame最上層容器類別-類別架構n nJFrameJFrame類別的物件是一個擁有框線、標題列和圖類別的物件是一個擁有框線、標題列和圖示按鈕的示按鈕的WindowsWindows視窗,這個視窗擁有隱藏的功視窗,這個視窗擁有隱藏的功能表列(能表列(MenuBarMenuBar)和)和ContentPaneContentPane元件,元件,JFrameJFrame類別的繼承架構,如下圖所示:類別的繼承架構,如下圖所示:10-2-1 JFrame最上層容器類別-建構子n nJFrame類別的建構子,如下表所示:10-2-1 JF

9、rame最上層容器類別-ContentPane相關方法n nJFrame類別關於ContentPane物件的相關方法,如下表所示:10-2-1 JFrame最上層容器類別-Component相關方法n nJFrame類別繼承自Component類別的相關方法,如下表所示:10-2-2 JApplet最上層容器類別-類別架構n n在在Java AppletJava Applet使用使用SwingSwing元件需要使用元件需要使用JAppletJApplet作為根類別來建立容器類別架構,同樣的作為根類別來建立容器類別架構,同樣的JAppletJApplet也擁有一個也擁有一個ContentPane

10、ContentPane物件,所以可以在此物件,所以可以在此ContentPaneContentPane物件新增所需的物件新增所需的SwingSwing元件,其繼元件,其繼承架構如下圖所示:承架構如下圖所示:10-2-2 JApplet最上層容器類別-步驟n n將Swing應用程式改成JApplet類別的Java Applet十分簡單,其步驟如下所示:刪除建構子中呼叫刪除建構子中呼叫super()super()方法的程式碼。方法的程式碼。將建構子名稱改為將建構子名稱改為init()init()或或start()start()。刪除刪除SwingSwing應用程式的主程式應用程式的主程式main(

11、)main()。JFrameJFrame類別本身如果是傾聽者物件,請刪除類別本身如果是傾聽者物件,請刪除實作介面,然後在新增傾聽者物件方法使用實作介面,然後在新增傾聽者物件方法使用newnew運算子新增傾聽者物件。運算子新增傾聽者物件。10-2-3 JDialog最上層容器類別-說明n n對話方塊(Dialog)是一種很重要的視窗介面,在視窗應用程式的執行過程中,一定會出現一些對話方塊,如果對話方塊會擱置使用者輸入資料至其它視窗,這種對話方塊稱為程式的對話方塊(Modal Dialog)。10-2-3 JDialog最上層容器類別-類別架構n n在在SwingSwing套件可以使用套件可以使用

12、JOptionPaneJOptionPane類別建立程類別建立程式的對話方塊,否則需要直接使用式的對話方塊,否則需要直接使用JDialogJDialog類別來類別來建立,其繼承架構如下圖所示:建立,其繼承架構如下圖所示:10-2-3 JDialog最上層容器類別-建構子n nJDialog類別的建構子,如下表所示:10-2-3 JDialog最上層容器類別-showMessageDialog()方法n nshowMessageDialog()方法可以顯示【確定】按鈕的訊息視窗,如下所示:JOptionPane.showMessageDialog(jpaneJOptionPane.showMes

13、sageDialog(jpane,這是一個測試的訊息視窗這是一個測試的訊息視窗!);!);10-2-3 JDialog最上層容器類別-showConfirmDialog()方法n nshowConfirmDialog()方法可以顯示詢問問題的對話方塊,如下所示:intint n=n=JOptionPane.showConfirmDialog(jpaneJOptionPane.showConfirmDialog(jpane,您是否已經按下您是否已經按下showMessageDialogshowMessageDialog按鈕按鈕?,?,操作問題操作問題,JOptionPane.YES_NO_OPT

14、IONJOptionPane.YES_NO_OPTION););10-2-3 JDialog最上層容器類別-showOptionDialog()方法(說明)n nshowOptionDialogshowOptionDialog()()方法可以顯示指定標題文字、圖示、方法可以顯示指定標題文字、圖示、訊息和按鈕的對話方塊,如下所示:訊息和按鈕的對話方塊,如下所示:Object options=Object options=showMessageDialogshowMessageDialog按鈕按鈕,showConfirmDialogshowConfirmDialog按鈕按鈕;intint m=m=

15、JOptionPane.showOptionDialog(jpaneJOptionPane.showOptionDialog(jpane,哪一個按鈕顯示警告訊息哪一個按鈕顯示警告訊息?,?,操作問題操作問題,JOptionPane.YES_NO_OPTIONJOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGEJOptionPane.QUESTION_MESSAGE,null,null,options,options0);options,options0);10-2-3 JDialog最上層容器類別-showOptionDialog()方法

16、(圖例)10-3 Swing的中間層容器類別n n10-3-1 JPanel類別n n10-3-2 JScrollPane類別10-3 Swing的中間層容器類別n nSwing套件的中間層容器類別的目的是將Swing元件群組化,以便使用第10-4節的版面配置管理員來編排新增的GUI元件,Swing套件提供相當多種中間層容器類別。例如:例如:JPanelJPanel、JScrollPaneJScrollPane、JSplitPaneJSplitPane、JTabbedPaneJTabbedPane和和JInternalFrameJInternalFrame等。等。10-3-1 JPanel類別

17、-說明與建構子n nJPanel類別屬於一般用途的中間層容器,預設為透明、沒有背景色彩,這是一種看不見的中間層容器類別,預設使用FlowLayout版面配置,其使用方式類似ContentPane類別,JPanel類別的建構子,如下表所示:10-3-1 JPanel類別-方法n nJPanel關於版面配置的相關方法,如下表所示:10-3-2 JScrollPane類別-說明與建構子n nJScrollPane類別擁有捲動軸,可以顯示更大尺寸的Swing元件。例如:JTextArea文字區域因為可以輸入整篇文章,所以需要JScrollPane新增捲動軸功能來檢視這篇文章。JScrollPane類別

18、的建構子,如下表所示:10-3-2 JScrollPane類別-方法n nJScrollPane類別的相關方法,如下表所示:n n10-4-1 BorderLayout版面配置n n10-4-2 FlowLayout版面配置n n10-4-3 CardLayout版面配置n n10-4-4 GridLayout版面配置n n10-4-5 GridBagLayout版面配置n n10-4-6 BoxLayout版面配置10-4 Swing元件的版面配置管理員10-4 Swing元件的版面配置管理員-說明n n版面配置管理員(Layout Manager)可以編排新增到ContentPane物件和

19、中間層容器的Swing元件,版面配置管理員設定容器內各元件的尺寸和位置,不同的版面配置管理員擁有不同預設的編排方式,只需依照需求選擇使用的版面配置管理員,就可以編排出漂亮的GUI介面。10-4 Swing元件的版面配置管理員-說明n nJComponent類別關於版面配置的相關方法,如下表所示:10-4-1 BorderLayout版面配置-說明1n nBorderLayout邊界式版面配置是將元件放置在中間(Center),然後在北(North)、南(South)、東(East)和西(West)的4個邊界放置元件,如下圖所示:10-4-1 BorderLayout版面配置-說明2n n容器類

20、別如果使用BorderLayout版面配置(這是JFrame的ContentPane預設的版面配置),在JComponent類別的add()方法就需要第2個參數來指定版面配置方式,如下所示:c.add(newc.add(new JButtonJButton(北按鈕北按鈕),),BorderLayout.NORTHBorderLayout.NORTH););n n上述程式碼的第2個參數是元件放置的位置。10-4-1 BorderLayout版面配置-建構子與方法n nBorderLayout類別的建構子,如下表所示:n nBorderLayout類別的相關方法,如下表所示:10-4-2 Flow

21、Layout版面配置-說明n nFlowLayout水流式版面配置屬於一種簡易的版面配置方式,JPanel預設使用這種版面配置。FlowLayout版面配置依序在同一列放置元件,並沒有任何特殊編排,如果元件超過邊界,就置於下一列。10-4-2 FlowLayout版面配置-建構子n nFlowLayout類別的建構子,如下表所示:10-4-3 CardLayout版面配置-說明n nCardLayout卡片式版面配置如同一張一張名片,它可以將Swing元件分配到一張張的不同卡片,每次只顯示一張卡片中的Swing元件。10-4-3 CardLayout版面配置-建構子n nCardLayout不

22、同於其它版面配置,每次只能在JFrame視窗顯示部分元件。CardLayout類別的建構子,如下表所示:10-4-3 CardLayout版面配置-相關方法n nCardLayout類別的相關方法主要是瀏覽卡片的方法,如下表所示:n nGridLayout格子式版面配置是使用相等尺寸的長方形,以表格方式分為幾列和幾欄來編排Swing元件,如下圖所示:10-4-4 GridLayout版面配置-說明10-4-4 GridLayout版面配置-建構子n nGridLayout類別的建構子,如下表所示:10-4-4 GridLayout版面配置-相關方法n nGridLayout類別的相關方法,如下

23、表所示:n nGridBagLayout格子袋式版面配置屬於比較複雜的版面配置,類似GridLayout可以將元件分為欄和列排列,不過列和欄並不需等高或等寬,而且可以使用GridBagConstraints類別設定成員變數來指定元件的顯示位置。10-4-5 GridBagLayout版面配置-說明10-4-5 GridBagLayout版面配置-建構子與方法n nGridBagLayout和GridBagConatraints類別的建構子,如下表所示:n nGridBagLayout類別的相關方法,如下表所示:10-4-5 GridBagLayout版面配置-成員變數110-4-5 GridB

24、agLayout版面配置-成員變數210-4-6 BoxLayout版面配置-說明n nBoxLayout盒式版面配置是Swing套件的一般用途版面配置,可以使用水平或垂直方式,如同堆積木般的編排元件,它可以說是一種完整功能的FlowLayout。10-4-6 BoxLayout版面配置-建構子n nBoxLayout類別的建構子,如下表所示:10-4-6 BoxLayout版面配置-類別方法n nBox類別常用的類別方法,如下表所示:10-5 Swing元件的框線-說明n nSwingSwing容器類別或元件都是繼承自容器類別或元件都是繼承自JComponentJComponent,所以都有

25、一或多個圍繞在邊界的框線,這些框,所以都有一或多個圍繞在邊界的框線,這些框線並非單純圍繞在元件外的線條,它可以加上標線並非單純圍繞在元件外的線條,它可以加上標題文字或增加元件周圍的空間,以便變化出更多題文字或增加元件周圍的空間,以便變化出更多樣化的元件編排。樣化的元件編排。10-5 Swing元件的框線-相關方法n nJComponent類別的setBorder()方法可以替元件新增框線,相關方法如下表所示:10-5 Swing元件的框線-建立物件10-5 Swing元件的框線-建立物件範例n n建立各種框線的建立各種框線的BorderBorder、TitledBorderTitledBord

26、er或或CompoundBorderCompoundBorder物件,如下所示:物件,如下所示:bLinebLine=BorderFactory.createLineBorder(Color.blueBorderFactory.createLineBorder(Color.blue););etchedLineetchedLine=BorderFactory.createEtchedBorderBorderFactory.createEtchedBorder();();TitledBorderTitledBorder titledLinetitledLine;titledLinetitledLi

27、ne=BorderFactory.createTitledBorder(bLineBorderFactory.createTitledBorder(bLine,標題標題););emptyLineemptyLine=BorderFactory.createEmptyBorderBorderFactory.createEmptyBorder();();Border Border compoundLinecompoundLine=BorderFactory.createCompoundBorder(etchedLineBorderFactory.createCompoundBorder(etchedLine,redLineredLine););

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁