JAVA 圖形用戶界面設計.ppt
《JAVA 圖形用戶界面設計.ppt》由會員分享,可在線閱讀,更多相關《JAVA 圖形用戶界面設計.ppt(73頁珍藏版)》請在裝配圖網上搜索。
第15章圖形用戶界面設計,,15.1JavaSwing概述,Java的java.awt包,即Java抽象窗口工具包(AWT:AbstractWindowToolkit)提供了許多用來設計GUI的組件類在學習GUI編程時,必須很好地理解掌握兩個概念:容器類(Container)和組件類(Component)。javax.swing包中JComponent類是java.awt包中Container類的一個直接子類、是Component類的一個間接子類,學習GUI編程主要是學習掌握使用Component類的一些重要的子類。,,Java把Component類的子類或間接子類創(chuàng)建的對象稱為一個組件。Java把Container的子類或間接子類創(chuàng)建的對象稱為一個容器??梢韵蛉萜魈砑咏M件。Container類提供了一個public方法:add(),一個容器可以調用這個方法將組件添加到該容器中。容器調用removeAll()方法可以移掉容器中的全部組件;調用remove(Componentc)方法可以移掉容器中參數c指定的組件。注意到容器本身也是一個組件,因此可以把一個容器添加到另一個容器中實現容器的嵌套。,,,15.2窗口,Java提供的JFrame類的實例就是一個底層容器(JDialog類的實例也是一個底層容器,見后面的15.6),即通常所稱的窗口。其他組件必須被添加到底層容器中,以便借助這個地層容器和操作系統(tǒng)進行信息交互JFrame類是Container類的間接子類。當需要一個窗口時,可使用JFrame或其子類創(chuàng)建一個對象,15.2.1JFrame常用方法,JFrame()創(chuàng)建一個無標題的窗口。JFrame(Strings)創(chuàng)建標題為s的窗口。publicvoidsetVisible(booleanb)設置窗口是否可見,窗口默認是不可見的。publicvoiddispose()撤消當前窗口,并釋放當前窗口所使用的資源。publicvoidsetDefaultCloseOperation(intoperation)該方法用來設置單擊窗體右上角的關閉圖標后,程序會做出怎樣的處理。,15.2.2菜單條、菜單、菜單項,窗口中的菜單條、菜單、菜單項是我們所熟悉的組件,菜單放在菜單條里,菜單項放在菜單里。,,1.菜單條JComponent類的子類JMenubar負責創(chuàng)建菜單條,即JMenubar的一個實例就是一個菜單條。JFrame類有一個將菜單條放置到窗口中的方法:setJMenuBar(JMenuBarbar);該方法將菜單條添加到窗口的頂端,需要注意的是,只能向窗口添加一個菜單條。,,2.菜單JComponent類的子類JMenu負責創(chuàng)建菜單,即JMenu的一個實例就是一個菜單。3.菜單項JComponent類的子類JMenuItem負責創(chuàng)建菜單項,即JMenuItem的一個實例就是一個菜單項。,,4.嵌入子菜單JMenu是JMenuItem的子類,因此菜單本身也是一個菜單項,當把一個菜單看作菜單項添加到某個菜單中時,稱這樣的菜單為子菜單。5.菜單上的圖標圖15.3帶菜單的窗口為了使菜單項有一個圖標,可以用圖標類Icon聲明一個圖標,然后使用其子類ImageIcon類創(chuàng)建一個圖標,15.3常用組件與布局,可以使用JComponent的子類JTextField創(chuàng)建文本框。文本框的特點是允許用戶在文本框中輸入單行文本。,15.3.1常用組件,1.文本框使用JComponent的子類JTextField創(chuàng)建文本框,允許用戶在文本框中輸入單行文本。2.文本區(qū)使用JComponent的子類JTexArea創(chuàng)建文本區(qū),允許用戶在文本區(qū)中輸入多行文本。3.按鈕使用JComponent的子類JButton類用來創(chuàng)建按鈕,允許用戶單擊按鈕。,,4.標簽使用JComponent的子類JLabel類用來創(chuàng)建標簽,標簽為用戶提供信息提示。5.選擇框使用JComponent的子類JCheckBox類用來創(chuàng)建選擇框,為用戶提供多項選擇。選擇框的右面有個名字,并提供兩種狀態(tài),一種是選中,另一種是未選中,用戶通過單擊該組件切換狀態(tài)。6.單選按鈕使用JComponent的子類JRadioButton類用來創(chuàng)建單項選擇框,為用戶提供單項選擇。,,7.下拉列表使用JComponent的子類JComboBox類用來創(chuàng)建下拉列表,為用戶提供單項選擇。用戶可以在下拉列表看到第一個選項和它旁邊的箭頭按鈕,當用戶單擊箭頭按鈕時,選項列表打開。8.密碼框可以使用JComponent的子類JPasswordField創(chuàng)建密碼框。允許用戶在密碼框中輸入單行密碼,密碼框的默認回顯字符是*。密碼框可以使用setEchoChar(charc)重新設置回顯字符,用戶輸入密碼時,密碼框只顯示回顯字符。密碼框調用char[]getPassword()方法可以返回實際的密碼。,15.3.2常用容器,1.JPanel面板我們會經常使用JPanel創(chuàng)建一個面板,再向這個面板添加組件,然后把這個面板添加到其它容器中。JPanel面板的默認布局是FlowLayout布局。2.滾動窗格JScrollPane滾動窗格只可以添加一個組件,可以把一個組件放到一個滾動窗格中,然后通過滾動條來該組件。JTextArea不自帶滾動條,因此我們就需要把文本區(qū)放到一個滾動窗格中,,3.拆分窗格JSplitPane顧名思義,拆分窗格就是被分成兩部分的容器。拆分窗格有兩種類型:水平拆分和垂直拆分。水平拆分窗格用一條拆分線把窗格分成左右兩部分,左面放一個組件,右面放一個組件,拆分線可以水平移動。垂直拆分窗格用一條拆分線把窗格分成上下兩部分,上面放一個組件,下面放一個組件,拆分線可以垂直移動。,,JSplitPane的兩個常用的構造方法:JSplitPane(inta,Componentb,Componentc)參數a取JSplitPane的靜態(tài)常量HORIZONTAL_SPLIT或VERTICAL_SPLIT,以決定是水平還是垂直拆分。后兩個參數決定要放置的組件。當拆分線移動時,組件不是連續(xù)變化的。JSplitPane(inta,booleanb,Componentc,Componentd)參數a取JSplitPane的靜態(tài)常量HORIZONTAL_SPLIT或VERTICAL_SPLIT,以決定是水平還是垂直拆分。參數b決定當拆分線移動時,組件是否連續(xù)變化(true是連續(xù)),后兩個參數決定要放置的組件。,,4.JLayeredPane分層窗格如果添加到容器中的組件經常需要處理重疊問題,就可以考慮將組件添加到分層窗格。分層窗格分成5個層,分層窗格使用add(Jcomponentcom,intlayer);添加組件com,并指定com所在的層,其中參數layer取值JLayeredPane類中的類常量:DEFAULT_LAYER、PALETTE_LAYER、MODAL_LAYER、POPUP_LAYER、DRAG_LAYER,15.3.3常用布局,容器可以使用方法:setLayout(布局對象);設置自己的布局。,,1.FlowLayout布局FlowLayout類創(chuàng)建的對象稱做FlowLayout型布局。FlowLayout型布局是JPanel型容器的默認布局,即JPanel及其子類創(chuàng)建的容器對象,如果不專門為其指定布局,則它們的布局就是FlowLayout型布局。FlowLayout類的一個常用構造方法如下:FlowLayout();該構造方法可以創(chuàng)建一個居中對齊的布局對象,,如果一個容器con使用這個布局對象:con.setLayout(flow);那么,con可以使用Container類提供的add方法將組件順序地添加到容器中,組件按照加入的先后順序從左向右排列,一行排滿之后就轉到下一行繼續(xù)從左至右排列,每一行中的組件都居中排列,組件之間的默認水平和垂直間隙是5個像素。組件的大小為默認的最佳大小,,對于添加到使用FlowLayout布局的容器中的組件,組件調用setSize(intx,inty)設置的大小無效,如果需要改變最佳大小,組件需調用:publicvoidsetPreferredSize(DimensionpreferredSize)設置大小,,FlowLayout布局對象調用setAlignment(intaligin)方法可以重新設置布局的對齊方式,其中aligin可以取值:FlowLayout.LEFT、FlowLayout.CENTER、FlowLayout.RIGHTFlowLayout布局對象調用setHgap(inthgap)方法和setVgap(intvgap)可以重新設置水平間隙和垂直間隙,,2.BorderLayout布局BorderLayout布局是Window型容器的默認布局,例如JFrame、JDialog都是Window類的子類,它們的默認布局都是BorderLayout布局。BorderLayout也是一種簡單的布局策略,如果一個容器使用這種布局,那么容器空間簡單地劃分為東、西、南、北、中五個區(qū)域,中間的區(qū)域最大。每加入一個組件都應該指明把這個組件加在哪個區(qū)域中,區(qū)域由BorderLayout中的靜態(tài)常量CENTER、NORTH、SOUTH、WEST、EAST表示,,每個區(qū)域只能放置一個組件,如果向某個已放置了組件的區(qū)域再放置一個組件,那么先前的組件將被后者替換掉。使用BorderLayout布局的容器最多能添加5個組件,如果容器中需要加入超過5個組件,就必須使用容器的嵌套或改用其它的布局策略。,,3.CardLayout布局使用CardLayout的容器可以容納多個組件,這些組件被層疊放如容器中,最先加入容器的是第一張(在最上面),依次向下排序。使用該布局的特點是,同一時刻容器只能從這些組件中選出一個來顯示,就像疊“撲克牌”,每次只能顯示其中的一張,這個被顯示的組件將占據所有的容器空間。,,假設有一個容器con,那么,使用CardLayout的一般步驟如下:創(chuàng)建CardLayout對象作為布局,使用容器的setLayout()方法為容器設置布局,容器調用add(Strings,Componentb)將組件b加入容器,并給出了顯示該組件的代號s。組件的代號是一個字符串,和組件的名字沒有必然聯(lián)系,但是,不同的組件代號必須互不相同。最先加入con的是第一張,依次排序。創(chuàng)建的布局card用CardLayout類提供的show()方法,顯示容器con中組件代號為s的組件:card.show(con,s);,,3.GridLayout布局GridLayout是使用較多的布局編輯器,其基本布局策略是把容器劃分成若干行乘若干列的網格區(qū)域,組件就位于這些劃分出來的小格中。GridLayout比較靈活,劃分多少網格由程序自由控制,而且組件定位也比較精確,使用GridLayout布局編輯器的一般步驟如下:使用GridLayout的構造方法GridLayout(intm,intn)創(chuàng)建布局對象,指定劃分網格的行數m和列數n,使用GridLayout布局的容器調用方法add(Componentc)將組件c加入容器,組件進入容器的順序將按照第一行第一個、第一行第二個、…第一行最后一個、第二行第一個、…最后一行第一個、…最后一行最后一個。,,使用GridLayout布局的容器最多可添加mn個組件。GridLayout布局中每個網格都是相同大小并且強制組件與網格的大小相同。,,5.BoxLayout布局用BoxLayout類可以創(chuàng)建一個布局對象,稱為盒式布局。BoxLayout在javax.swing.border包中。javax.swing包提供了Box類,該類也是Container類的一個子類,創(chuàng)建的容器稱作一個盒式容器,盒式容器的的默認布局是盒式布局,而且不允許更改盒式容器的布局。因此,在策劃程序的布局時,可以利用容器的嵌套,將某個容器嵌入幾個盒式容器,達到你的布局目的。,,使用盒式布局的容器將組件排列在一行或一列,這取決于創(chuàng)建盒式布局對象時,是否指定了是行排列還是列排列。使用BoxLayou的構造方法BoxLayout(Containercon,,intaxis)可以創(chuàng)建一個盒式布局對象,,行型盒式布局容器中添加的組件的上沿在同一水平線上。列型盒式布局容器中添加的組件的左沿在同一垂直線上。容器的目的是向其添加組件,并根據需要設置合理的布局。如果需要一個盒式布局的容器,可以使用Box類的類(靜態(tài))方法createHorizontalBox()獲得一個具有行型盒式布局的盒式容器;使用Box類的類(靜態(tài))方法createVerticalBox()獲得一個具有列型盒式布局的盒式容器。如果想控制盒式布局容器中組件之間的距離,就需要使用水平支撐組件或垂直支撐組件。,,Box類調用靜態(tài)方法createHorizontalStrut(intwidth)可以得到一個不可見的水平Struct對象,稱做水平支撐。該水平支撐的高度為0,寬度是width。Box類調用靜態(tài)方法createVertialStrut(intheight)可以得到一個不可見的垂直Struct對象,稱做垂直支撐。參數height決定垂直支撐的高度,垂直支撐的寬度為0。一個行型盒式布局的容器,可以在組件之間插入水平支撐來控制組件之間的距離。一個列型盒式布局的容器,可以在組件之間插入垂直支撐來控制組件之間的距離,,6.null布局可以把一個容器的布局設置為null布局(空布局)。空布局容器可以準確地定位組件在容器的位置和大小。setBounds(inta,intb,intwidth,intheight)方法是所有組件都擁有的一個方法,組件調用該方法可以設置本身的大小和在容器中的位置。,15.4處理事件,15.4.1事件處理模式1.事件源能夠產生事件的對象都可以成為事件源,如文本框、按鈕、下拉式列表等。也就是說,事件源必須是一個對象,而且這個對象必須是Java認為能夠發(fā)生事件的對象。,,2.監(jiān)視器。我們需要一個對象對事件源進行監(jiān)視,以便對發(fā)生的事件作出處理。事件源通過調用相應的方法將某個對象注冊為自己的監(jiān)視器事件源注冊監(jiān)視器之后,相應的操作就會導致相應的事件的發(fā)生,并通知監(jiān)視器,監(jiān)視器就會作出相應的處理。,,3.處理事件的接口。監(jiān)視器負責處理事件源發(fā)生的事件。監(jiān)視器是一個對象,為了處理事件源發(fā)生的事件,監(jiān)視器這個對象會自動調用一個方法來處理事件。那么監(jiān)視器去調用哪個方法呢?我們已經知道,對象可以調用創(chuàng)建它的那個類中的方法,那么它到底調用該類中的哪個方法呢?Java規(guī)定:為了讓監(jiān)視器這個對象能對事件源發(fā)生的事件進行處理,創(chuàng)建該監(jiān)視器對象的類必須聲明實現相應的接口,即必須在類體中重寫接口中所有方法,那么當事件源發(fā)生事件時,監(jiān)視器就自動調用被類重寫的某個接口方法。,,,15.4.2ActionEvent事件,1.ActionEvent事件源文本框、按紐、菜單項、密碼框和單選按紐都可以觸發(fā)ActionEvent事件,即都可以成為ActionEvent事件的事件源。比如,對于注冊了監(jiān)視器的文本框,在文本框獲得輸入焦點后,如果用戶按回車鍵,Java運行環(huán)境就自動用ActionEvent類創(chuàng)建一個對象,即觸發(fā)ActionEvent事件;對于注冊了監(jiān)視器的按紐,如果用戶按單擊按紐,就會觸發(fā)ActionEvent事件;對于注冊了監(jiān)視器的菜單項,如果用戶按選中該菜單項,就會觸發(fā)ActionEvent事件;如果用戶按選擇了某個單選按紐,就會觸發(fā)ActionEvent事件。,,2.注冊監(jiān)視器能觸發(fā)ActionEvent事件的組件使用addActiomListener(ActionListenerlisten)將實現ActionListener接口的類的實例注冊為事件源的監(jiān)視器。,,3.ActionListener接口ActionListener接口在java.awt.event包中,該接口中只有一個方法:publicvoidactionPerformed(ActinEvente)事件源觸發(fā)ActionEvent事件后,監(jiān)視器將發(fā)現觸發(fā)的ActionEvent事件,然后調用接口中的方法:actionPerformed(ActinEvente)對發(fā)生的事件作出處理。當監(jiān)視器調用actionPerformed(ActinEvente)方法時,ActionEvent類事先創(chuàng)建的事件對象就會傳遞給該方法的參數e。,,4.ActionEvent類中的方法ActionEvent類有如下常用的方法:publicObjectgetSource()publicStringgetActionCommand(),15.4.3ItemEvent事件,1.ItemEvent事件源選擇框、下拉列表都可以觸發(fā)ItemEvent事件。選擇框提供兩種狀態(tài),一種是選中,另一種是未選中,對于注冊了監(jiān)視器的選擇框,當用戶的操作使得選擇框從未選中狀態(tài)變成選中狀態(tài)或從選中狀態(tài)變成未選中狀態(tài)時就觸發(fā)ItemEvent事件;同樣,對于注冊了監(jiān)視器的下拉列表,如果用戶按選中下拉列表中的某個選項,就會觸發(fā)ItemEvent事件。,,2.注冊監(jiān)視器能觸發(fā)ItemEvent事件的組件使用addItemListener(ItemListenerlisten)將實現ItemListener接口的類的實例注冊為事件源的監(jiān)視器。,,3.ItemListener接口ItemListener接口在java.awt.event包中,該接口中只有一個方法:publicvoiditemStateChanged(ItemEvente)事件源觸發(fā)ItemEvent事件后,監(jiān)視器將發(fā)現觸發(fā)的ItemEvent事件,然后調用接口中的方法:itemStateChanged(ItemEvente)對發(fā)生的事件作出處理。當監(jiān)視器調用itemStateChanged(ItemEvente)方法時,ItemEvent類事先創(chuàng)建的事件對象就會傳遞給該方法的參數e。ItemEvent事件對象除了可以使用getSource()方法返回發(fā)生Itemevent事件的事件源外,也可以使用getItemSelectable()方法返回發(fā)生Itemevent事件的事件源。,15.4.4DocumentEvent事件,1.DocumentEvent事件源文本區(qū)含有一個實現Document接口的實例,該實例被稱做文本區(qū)所維護的文檔,文本區(qū)調用getDocument()方法返回所維護的文檔。文本區(qū)所維護的文檔能觸發(fā)DocumentEvent事件。需要特別注意的是,DocumentEvent不在java.awt.event包中,而是在javax.swing.event包中。用戶在文本區(qū)中進行文本編輯操作,使得文本區(qū)中的文本區(qū)內容發(fā)生變化,將導致文本區(qū)所維護的文檔模型中的數據發(fā)生變化,從而導致文本區(qū)所維護的文檔觸發(fā)DocumentEvent事件。,,2.注冊監(jiān)視器能觸發(fā)DocumentEven事件的事件源使用addDucumentListener(DocumentListenerlisten)將實現DocumentListener接口的類的實例注冊為事件源的監(jiān)視器。,,3.DocumentListener接口DocumentListener接口在java.swing.event包中,該接口中有三個方法:publicvoidchangedUpdate(DocumentEvente)publicvoidremoveUpdate(DocumentEvente)publicvoidinsertUpdate(DocumentEvente)事件源觸發(fā)DucumentEvent事件后,監(jiān)視器將發(fā)現觸發(fā)的DocumentEvent事件,然后調用接口中的相應方法對發(fā)生的事件作出處理。,15.4.5MouseEvent事件,1.使用MouseListener接口處理鼠標事件使用MouseListener接口可以處理以下5種操作觸發(fā)的鼠標事件:在事件源上按下鼠標鍵。在事件源上釋放鼠標鍵。在事件源上擊鼠標鍵。鼠標進入事件源。鼠標退出事件源。,,MouseEvent中有下列幾個重要的方法:getX()獲取鼠標指針在事件源坐標系中的x-坐標。getY()獲取鼠標指針在事件源坐標系中的y-坐標。getModifiers()獲取鼠標的左鍵或右鍵。鼠標的左鍵和右鍵分別使用InputEvent類中的常量BUTTON1_MASK和BUTTON3_MASK來表示。getClickCount()獲取鼠標被單擊的次數。getSource()獲取發(fā)生鼠標事件的事件源。,,事件源注冊監(jiān)視器的方法是addMouseListener(MouseListenerlistener)。MouseListener接口中有如下方法:mousePressed(MouseEvent)mouseReleased(MouseEvent)mouseEntered(MouseEvent)mouseExited(MouseEvent)mouseClicked(MouseEvent),,2.使用MouseMotionListener接口處理鼠標事件使用MouseMotionListener接口可以處理以下兩種操作觸發(fā)的鼠標事件。在事件源上拖動鼠標在事件源上移動鼠標鼠標事件的類型是MouseEvent,即當發(fā)生鼠標事件時,MouseEvent類自動創(chuàng)建一個事件對象。,,事件源注冊監(jiān)視器的方法是addMouseMotionListener(監(jiān)視器MotionListenerlistener)。MouseMotionListener接口中有如下方法。mouseDragged(MouseEvent)mouseMoved(MouseEvent),15.4.6焦點事件,組件可以觸發(fā)焦點事件。組件可以使用addFocusListener(FocusListenerlistener)注冊焦點事件監(jiān)視器。當組件獲得焦點監(jiān)視器后,如果組件從無輸入焦點變成有輸入焦點或從有輸入焦點變成無輸入焦點都會觸發(fā)FocusEvent事件。,,創(chuàng)建監(jiān)視器的類必須要實現FocusListener接口,該接口有兩個方法:publicvoidfocusGained(FocusEvente)publicvoidfocusLost(FocusEvente),,用戶通過單擊組件可以使得該組件有輸入焦點,同時也使得其它組件變成無輸入焦點。一個組件也可調用publicbooleanrequestFocusInWindow()方法可以獲得輸入焦點。,15.4.7鍵盤事件,當按下、釋放或敲擊鍵盤上一個鍵時就觸發(fā)了鍵盤事件,在Java事件模式中,必須要有發(fā)生事件的事件源。當一個組件處于激活狀態(tài)時,敲擊鍵盤上一個鍵就導致這個組件觸發(fā)鍵盤事件。使用KeyListener接口處理鍵盤事件,該中有如下3個方法。publicvoidkeyPressed(KeyEvente)publicvoidkeyTyped(KeyEvente)publicvoidKeyReleased(KeyEvente),15.4.8匿名類實例或窗口做監(jiān)視器,讓事件源所在的類的實例作為監(jiān)視器,能讓事件的處理比較方便,這是因為,監(jiān)視器可以方便的操作事件源所在的類中的其他成員。當事件的處理比較簡單,系統(tǒng)也不復雜時,讓事件源所在的類的實例作為監(jiān)視器是一個不錯的選擇。但是,當事件的處理比較復雜時,使用當前窗口會讓系統(tǒng)缺乏彈性,因為每當修改處理事件的代碼時都將導致事件源所在的類的代同時被編譯,反之也是。,15.4.9事件總結,1.授權模式Java的事件處理是基于授權模式,即事件源調用調用方法將某個對象注冊為自己的監(jiān)視器。2.接口回調Java語言使用接口回調技術實現處理事件的過程。addXXXListener(XXXListenerlistener)方法中的參數是一個接口,listener可以引用任何實現了該接口的類所創(chuàng)建的對象,當事件源發(fā)生事件時,接口listener立刻回調被類實現的接口中的某個方法。,,3.方法綁定從方法綁定角度看,Java將某種事件的處理綁定到對應的接口,即綁定到接口中的方法,也就是說,當事件源觸發(fā)事件發(fā)生后,監(jiān)視器準確知道去調用哪個方法。,,4.保持松藕合監(jiān)視器和事件源應當保持是一種松藕合關系,也就是說盡量讓事件源所在的類和監(jiān)視器是組合關系,盡量不要讓事件源所在的類的實例、以及它的子類的實例或內部類、匿名類的實例做監(jiān)視器。也就是說,當事件源觸發(fā)事件發(fā)生后,系統(tǒng)知道某個方法會被執(zhí)行,但無須關心到底是哪個對象去調用了這個方法,因為任何實現接口的類的實例(做為監(jiān)視器)都可以調用這個方法來處理事件。,15.5使用MVC結構,MVC是一種通過三個不同部分構造一個軟件或組件的理想辦法:模型(model)用于存儲數據的對象。視圖(view)為模型提供數據顯示的對象??刂破鳎╟ontroller)處理用戶的交互操作,對于用戶的操作作出響應,讓模型和視圖進行必要的交互,即通過視圖修改、獲取模型中的數據;當模型中的數據變化時,讓視圖更新顯示。,15.6對話框,JDialog類和JFrame都是Window的子類,二者的實例都是底層容器,但二者有相似之處也有不同的地方,主要區(qū)別是,JDialog類創(chuàng)建的對話框必須要依賴于某個窗口。對話框分為無模式和有模式兩種。如果一個對話框是有模式的對話框,那么當這個對話框處于激活狀態(tài)時,只讓程序響應對話框內部的事件,而且將堵塞其它線程的執(zhí)行,用戶不能再激活對話框所在程序中的其它窗口,直到該對話框消失不可見。無模式對話框處于激活狀態(tài)時,能再激活其它窗口,也不堵塞其它線程的執(zhí)行。,15.6.1消息對話框,消息對話框是有模式對話框,進行一個重要的操作動作之前,最好能彈出一個消息對話框??梢杂胘avax.swing包中的JOptionPane類的靜態(tài)方法:publicstaticvoidshowMessageDialog(ComponentparentComponent,Stringmessage,Stringtitle,intmessageType)創(chuàng)建一個消息對話框,15.6.2輸入對話框,輸入對話框含有供用戶輸入文本的文本框、一個確認和取消按鈕,是有模式對話框。當輸入對話框可見時,要求用戶輸入一個字符串。javax.swing包中的JOptionPane類的靜態(tài)方法:publicstaticStringshowInputDialog(ComponentparentComponent,Objectmessage,Stringtitle,intmessageType)可以創(chuàng)建一個輸入對話框,15.6.3確認對話框,確認對話框是有模式對話框,可以用javax.swing包中的JOptionPane類的靜態(tài)方法:publicstaticintshowConfirmDialog(ComponentparentComponent,Objectmessage,Stringtitle,intoptionType)得到一個確認對話框,15.6.4顏色對話框,可以用javax.swing包中的JColorChooser類的靜態(tài)方法:publicstaticColorshowDialog(Componentcomponent,Stringtitle,ColorinitialColor)創(chuàng)建一個有模式的顏色對話框,15.6.5文件對話框,文件對話框是一個從文件中選擇文件的界面。javax.swing包中的JFileChooser類可以創(chuàng)建文件對話框,使用該類的構造方法JFileChooser()創(chuàng)建初始不可見的有模式的文件對話框。然后文件對話框調用下述2個方法:showSaveDialog(Componenta);showOpenDialog(Componenta);都可以使得對話框可見,只是呈現的外觀有所不同,showSaveDialog方法提供保存文件的界面,showOpenDialog方法提供打開文件的界面,15.6.6自定義對話框,創(chuàng)建對話框與創(chuàng)建窗口類似,通過建立JDialog的子類來建立一個對話框類,然后這個類的一個實例,即這個子類創(chuàng)建的一個對象,就是一個對話框。對話框是一個容器,它的默認布局是BorderLayout,對話框可以添加組件,實現與用戶的交互操作,,以下是構造對話框的2個常用構造方法。JDialog()構造一個無有標題的初始不可見的對話框,對話框依賴一個默認的不可見的窗口,該窗口由Java運行環(huán)境提供。JDialog(JFrameowner)構造一個無標題的初始不可見的無模式的對話框,owner是對話框所依賴的窗口,如果owner取null,對話框依賴一個默認的不可見的窗口,該窗口由Java運行環(huán)境提供。,15.7發(fā)布GUI程序,可以使用jar.exe把一些文件壓縮成一個JAR文件,來發(fā)布我們的應用程序。我們可以把java應用程序中涉及到的類壓縮成一個JAR文件,比如Tom.jar,然后使用java解釋器(使用參數-jar)執(zhí)行這個壓縮文件,或用鼠標雙擊該文件,執(zhí)行這個壓縮文件。java-jarTom.jar,,假設D:\test目錄中的應用程序有兩個類A、B,其中A是主類。生成一個Jar文件的步驟如下:1.首先用文本編輯器(比如Windows下的記事本)編寫一個清單文件。Mymoon.mf:Manifest-Version:1.0Main-Class:ACreated-By:1.6,,2.生成JAR文件D:\test\jarcfmTom.jarMymoon.mfA.classB.class如果目錄test下的字節(jié)碼文件剛好是應用程序需要的全部字節(jié)碼文件,也可以如下生成JAR文件:D:\test\jarcfmTom.jarMymoon.mf*.class,- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- JAVA 圖形用戶界面設計 圖形 用戶 界面設計
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://zhongcaozhi.com.cn/p-3337272.html