第11章基于swing的圖形用戶界面設(shè)計_第1頁
第11章基于swing的圖形用戶界面設(shè)計_第2頁
第11章基于swing的圖形用戶界面設(shè)計_第3頁
第11章基于swing的圖形用戶界面設(shè)計_第4頁
第11章基于swing的圖形用戶界面設(shè)計_第5頁
已閱讀5頁,還剩114頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

Java語言程序設(shè)計天津理工大學(xué)計算機與通信工程學(xué)院主講教師:李雙喜

2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第2

頁第11章基于Swing的圖形

用戶界面設(shè)計2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第3

頁1.概述2.JFrame窗體5.中間容器6.文本組件7.按鈕與標簽組件8.復(fù)選框與單選按鈕組件9.列表組件10.表格組件11.樹組件12.進度條組件13.組件常用方法14.窗口事件15.鼠標事件16.焦點事件17.鍵盤事件18.AWT線程19.計時器20.MVC模式21.播放音頻22.對話框23.多文檔界面24.發(fā)布應(yīng)用程序2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第4

頁11.1AWT組件與SWING組件概述Java早期進行用戶界面設(shè)計時,使用Java.awt包中提供的類;java.awt包中的類創(chuàng)建的組件習(xí)慣上稱作重組件;JDK1.2之后,新增javax.swing包,提供了更加豐富的、功能強大的組件,稱為swing組件。大部分組件是輕量組件,外觀不依賴平臺,且較重量組件而言有更高的性能。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第5

頁JComponent類的部分子類以及JFrame類和JDialog類Container

JFrameJDialogWindowFrameDialogJComponent

JButton

JTextField

JTeatArea

JTree

JPanel

JTableComponent輕組件java.awtjava.awt2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第6

頁兩個概念:容器類(Container)和組件類(Component)。Java把由Component類的子類或間接子類創(chuàng)建的對象稱為一個組件。Java把由Container的子類或間接子類創(chuàng)建的對象稱為一個容器。可以向容器添加組件。Container類提供了一個public方法:add(),一個容器可以調(diào)用這個方法將組件添加到該容器中。調(diào)用removeAll()方法可以移掉容器中的全部組件;調(diào)用remove(Componentc)方法可以移掉容器中參數(shù)指定的組件。每當(dāng)容器添加新的組件或移掉組件時,應(yīng)該讓容器調(diào)用validate()方法,以保證容器中的組件能正確顯示出來。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第7

頁容器本身也是一個組件,因此你可以把一個容器添加到另一個容器中實現(xiàn)容器的嵌套。swing包中有四個最重要的類:JApplet、JFrame、JDialog和JComponent。JFrame、JApplet、JDialog都是重組件,即有同位體的組件。窗口(JFrame)、對話框(JDialog)、小應(yīng)用程序(JApplet)可以和操作系統(tǒng)交互信息,輕組件必須在這些重量容器中繪制自己。這些容器稱為Swing的底層容器。返回2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第8

頁11.2JFrame窗體JFrame類其子類創(chuàng)建的對象是窗體,是重量容器。JFrame類常用方法如下:JFrame()——創(chuàng)建一個無標題的窗口。JFrame(Strings)——創(chuàng)建一個標題為s的窗口。publicvoidsetBounds(inta,intb,intwidth,intheight)——設(shè)置出現(xiàn)在屏幕上時的初始位置為(a,b),即距屏幕左面a個像素、距屏幕上方b個像素;窗口的寬是width,高是height。publicvoidsetSize(intwidth,intheight)——設(shè)置窗口的大小,窗口在屏幕出現(xiàn)是默認位置是(0,0)。publicvoidsetVisible(booleanb)——設(shè)置窗口是可見還是不可見,窗口默認是不可見的。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第9

頁publicvoidsetResizable(booleanb)——設(shè)置窗口是否可調(diào)整大小,默認可調(diào)整。publicvoidsetDefaultCloseOperation(int

operation)——設(shè)置用戶單擊此窗體右上角的關(guān)閉圖標后,程序執(zhí)行的操作。DO_NOTHING_ON_CLOSE:不執(zhí)行任何操作;HIDE_ON_CLOSE:隱藏該窗體。DISPOSE_ON_CLOSE:自動隱藏并釋放該窗體。EXIT_ON_CLOSE:退出應(yīng)用程序。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第10

頁11.3菜單組件1.JMenuBar菜單條JComponent類的子類JMenubar是負責(zé)創(chuàng)建菜單條的,即JMenubar的一個實例就是一個菜單條。JFrame類有一個將菜單條放置到窗口中的方法:publicvoidsetJMenuBar(JMenuBarmenubar);注意:只能向窗口添加一個菜單條。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第11

頁2.JMenu菜單JComponent類的子類JMenu類是負責(zé)創(chuàng)建菜單的,JMenu類的主要方法有以下幾種:JMenu(Strings)建立一個指定標題菜單,標題由參數(shù)s確定。publicvoidadd(MenuItemitem)向菜單增加由參數(shù)item指定的菜單選項對象。publicvoidadd(Strings)向菜單增加指定的選項。publicJMenuItemgetItem(intn)得到指定索引處的菜單選項。publicintgetItemCount()得到菜單選項數(shù)目。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第12

頁3.JMenuItem菜單項JMenuItem是JMenu的父類,負責(zé)創(chuàng)建菜單項。主要方法:JMenuItem(Strings)構(gòu)造有標題的菜單;JMenuItem(Stringtext,Iconicon)構(gòu)造有標題和圖標的菜單項;publicvoidsetEnabled(booleanb):設(shè)置當(dāng)前菜單項是否可被選擇。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第13

頁publicStringgetLabel()得到菜單選項的名字。publicvoidsetAccelerator(KeyStrokekeyStroke)為菜單項設(shè)置快捷鍵。KeyStroke類的類方法:publicstaticKeyStrokegetKeyStroke(charkeyChar)publicstaticKeyStrokegetKeyStroke(intkeyCode,intmodifiers)keyCode取值范圍:KeyEvent.VK_A~KeyEvent.VK_Z。modifiers取值:InputEvent.ALT_MASK、 InputEvent.CTRL_MASK、 InputEvent.SHIFT_MASK。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第14

頁4.嵌入子菜單JMenu是JMenuItem的子類,因此菜單項本身還可以是一個菜單,稱這樣的菜單項為子菜單。為了使得菜單項有一個圖標,可以用圖標類Icon聲明一個圖標,然后使用其子類ImageIcon類創(chuàng)建一個圖標,如:Iconicon=newImageIcon(“dog.gif”);下面的例子1是一個含有菜單的窗口。返回2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第15

頁【例10-1】一個含有菜單的窗口。返回2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第16

頁11.4布局設(shè)計java.awt包中的布局類:FlowLayout、BorderLayout、CardLayout、GridLayoutjava.swing.border包中的布局類:BoxLayoutJFrame窗口的默認布局是BorderLayout布局。容器可以使用方法setLayout(布局對象)來設(shè)置自己的布局。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第17

頁1.FlowLayout布局FlowLayout類創(chuàng)建的對象稱做FlowLayout型布局。構(gòu)造方法:FlowLayout()該構(gòu)造方法可以創(chuàng)建一個居中對齊的布局對象。例如:FlowLayoutflow=newFlowLayout();容器con使用這個布局對象:con.setLayout(flow);con可以使用Container類提供的add方法將組件順序地添加到容器中,組件按照加入的先后順序從左向右排列,一行排滿之后就轉(zhuǎn)到下一行繼續(xù)從左至右排列。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第18

頁setHgap(inthgap):設(shè)置布局的水平間隙;setVgap(intvgap):設(shè)置布局的垂直間隙?!纠?1-1】JFrame使用FlowLayout布局放置10個組件。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第19

頁2.BorderLayout布局Window型容器的默認布局。容器空間簡單地劃分為東、西、南、北、中五個區(qū)域;每加入一個組件都應(yīng)該指明把這個組件添加在哪個區(qū)域中;區(qū)域由BorderLayout中的靜態(tài)常量CENTER、NORTH、SOUTH、WEST、EAST表示。添加到某個區(qū)域的組件將占據(jù)整個這個區(qū)域;每個區(qū)域只能放置一個組件,如果向某個已放置了組件的區(qū)域再放置一個組件,那么先前的組件將被后者替換掉。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第20

頁【例11-3】2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第21

頁3.CardLayout布局使用CardLayout的容器可以容納多個組件,但同一時刻容器只能從這些組件中選出一個來顯示,這個被顯示的組件將占據(jù)所有的容器空間。JTabbedPane創(chuàng)建的對象是一個輕容器,稱作選項卡窗格。選項卡窗格的默認布局是CardLayout卡片式布局??梢允褂胊dd(Stringtext,Componentc)將組件c添加到容器當(dāng)中,并指定和該組件c對應(yīng)的選項卡的文本提示是text。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第22

頁【例11-4】在選項卡窗格中添加了5個按鈕,并設(shè)置了相對應(yīng)的選項卡的文本提示,然后將選項卡窗格添加到窗體中。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第23

頁4.GridLayout布局把容器劃分成若干行乘若干列的網(wǎng)格區(qū)域,組件就位于這些劃分出來的小格中。一般步驟:使用GridLayout的構(gòu)造方法GridLayout(intm,intn)創(chuàng)建布局對象,指定劃分網(wǎng)格的行數(shù)m和列數(shù)n,

例如:GridLayoutgrid=newnewGridLayout(10,8);使用GridLayout布局的容器調(diào)用方法add將組件加入容器,組件進入容器的順序?qū)凑盏谝恍械谝粋€、第一行第二個、…、第一行最后一個、第二行第一個、…、最后一行第一個、…、最后一行最后一個。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第24

頁5.BoxLayout布局BoxLayout在java.swing.border包中,稱為盒式布局;javaswing包的Box類Container類的一個子類,創(chuàng)建的容器稱作一個盒式容器;盒式容器的的默認布局是盒式布局,且不允許更改盒式容器的布局??梢岳萌萜鞯那短祝瑢⒛硞€容器嵌入幾個盒式容器,達到布局目的。使用盒式布局的容器將組件排列在一行或一列,這取決于創(chuàng)建盒式布局對象時,是否指定了是行排列還是列排列。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第25

頁行型盒式布局容器中添加的組件的上沿在同一水平線上。列型盒式布局容器中添加的組件的左沿在同一垂直線上。createHorizontalBox():獲得一個具有行型盒式布局的盒式容器;createVerticalBox():獲得一個具有列型盒式布局的盒式容器。使用水平支撐或垂直支撐可以控制盒式布局容器中組件之間的距離。createHorizontalStrut(intwidth):得到一個不可見的水平Struct類型對象,稱做水平支撐。 該水平支撐的高度為0,寬度是width。createVertialStrut(intheight):得到一個不可見的垂直Struct類型對象,稱做垂直支撐。 參數(shù)height決定垂直支撐的高度,垂直支撐的寬度為0。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第26

頁【例11-5】有兩個列型盒式容器:boxV1、boxV2和一個行行盒式容器baseBox。在列型盒式容器的組件之間添加垂直支撐,控制組件之間的距離,將boxV1、boxV2添加到baseBox中,并在它倆之間添加了水平支撐。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第27

頁6.null布局空布局容器可以準確地定位組件在容器的位置和大小。所有組件都擁有setBounds(inta,intb,intwidth,intheight)方法,組件調(diào)用該方法可以設(shè)置本身的大小和在容器中的位置。例如,p.setLayout(null);把容器p的布局設(shè)置為空布局。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第28

頁向空布局的容器p添加一個組件c需要兩個步驟:首先使用add(c)方法向容器添加組件,然后組件c再調(diào)用setBounds(inta,intb,intwidth,intheight)方法設(shè)置該組件在容器中的位置和本身的大小, 參數(shù)a,b是被添加的組件c的左上角在容器中的位置坐標,即該組件距容器左面a個像素,距容器上方b個像素; weidth,height是組件c的寬和高。返回2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第29

頁11.5中間容器1.JPanel面板使用JPanel可以創(chuàng)建一個面板,再向這個面板添加組件,然后把這個面板添加到底層容器或其他中間容器中。JPanel面板的默認布局是FlowLayout布局??梢允褂脴?gòu)造方法JPanel()構(gòu)造一個面板容器對象。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第30

頁2.JScrollPane滾動窗格我們可以把一個組件放到一個滾動窗格中,然后通過滾動條來觀察這個組件。例如,JTextArea不自帶滾動條,因此我們就需要把文本區(qū)放到一個滾動窗格中??梢允褂肑ScorollPane的構(gòu)造方法JScorollPane(componentc)構(gòu)造一個滾動窗格。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第31

頁3.JSplitPane拆分窗格兩種類型:水平拆分和垂直拆分。水平拆分窗口用一條拆分線把容器分成左右兩部分,左面放一個組件,右面放一個組件,拆分線可以水平移動。垂直拆分窗格由一條拆分線分成上下兩部分,上面放一個組件,下面放一個組件,拆分線可以垂直移動。構(gòu)造方法JSplitPane(inta,Componentb,Componentc)a取JSplitPane的靜態(tài)常量HORIZONTAL_SPLIT或VERTICAL_SPLIT,以決定是水平還是垂直拆分。后兩個參數(shù)決定要放置的組件。setDividerLocation(doubleposition)kyi設(shè)置拆分線的位置。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第32

頁4.JLayeredPane分層窗格JLayeredPane容器可以處理組件重疊問題。JLayeredPane容器將容器分成5個層;容器使用add(ponentcom,intlayer)添加組件com,并指定com所在的層。其中參數(shù)layer取值JLayeredPane類中的類常量:DEFAULT_LAYER、PALETTE_LAYER、MODAL_LAYER、POPUP_LAYER、DRAG_LAYER。DEFAULT_LAYER是最底層;DRAG_LAYER層是最上面的層。添加到同一層上的組件,如果發(fā)生重疊,后添加的會遮擋先添加的組件。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第33

頁publicvoidsetLayer(Componentc,intlayer) 可以重新設(shè)置組件c所在的層;publicintgetLayer(Componentc) 可以獲取組件c所在的層數(shù)。【例11-6】返回2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第34

頁11.6文本組件1.JTextField文本框JTextField(intx) 文本框的可見字符個數(shù)由參數(shù)x指定。JTextField(Strings) 文本框的初始字符串為s.publicvoidsetText(Strings) 設(shè)置文本框中的文本為參數(shù)s指定的文本。publicStringgetText() 獲取文本框中的文本。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第35

頁publicvoidsetEditable(booleanb) 指定文本框的可編輯性。publicvoidsetHorizontalAlignment(intalignment) 設(shè)置文本在文本框中的對齊方式。2.JPasswordField密碼框setEchoChar(charc) 設(shè)置回顯字符(默認的回顯字符是‘*’);char[]getPassword() 返回密碼框中的密碼。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第36

頁3.ActionEvent事件(1)事件源能夠產(chǎn)生事件的對象都可以成為事件源,如文本框、按鈕、下拉式列表等。事件源必須是一個對象,而且這個對象必須是Java認為能夠發(fā)生事件的對象。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第37

頁(2)監(jiān)視器事件源通過調(diào)用相應(yīng)的方法將某個對象作為自己的監(jiān)視器。例如,對于文本框,addActionListener(ActioListenerlistener)對于獲取了監(jiān)視器的文本框?qū)ο?,在文本框獲得輸入焦點之后,如果用戶按回車鍵,Java運行系統(tǒng)就自動用ActionEvent類創(chuàng)建了一個對象,即發(fā)生了ActionEvent事件。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第38

頁(3)處理事件的接口發(fā)生ActionEvent事件的事件源對象獲得監(jiān)視器方法是:addActionListener(ActioListenerlistener);參數(shù)是ActioListener類型的接口,必須將一個實現(xiàn)ActioListener接口的類創(chuàng)建的對象傳遞給該方法的參數(shù),使得該對象成為事件源的監(jiān)視器。監(jiān)視器負責(zé)調(diào)用特定的方法處理事件,也就是說創(chuàng)建監(jiān)視器的類必須提供處理事件的特定方法,即實現(xiàn)接口方法。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第39

頁為了能監(jiān)視到ActionEvent類型事件,事件源必須使用addActionListener方法獲得監(jiān)視器;創(chuàng)建監(jiān)視器的類必須實現(xiàn)接口ActionListener。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第40

頁通知發(fā)生XXX事件事件源.addXXXListener(存放監(jiān)視器引用的接口)接口方法(XXXe)

實現(xiàn)XXXListener接口的監(jiān)視器接口回調(diào)事件處理2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第41

頁(4)ActionEvent類中的方法方法publicObjectgetSource()可以返回發(fā)生ActionEvent事件的對象的引用?!纠?1-7】2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第42

頁【例11-8】【例11-9】2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第43

頁4.菜單項上的ActionEvent事件單擊某個菜單項可以發(fā)生ActionEvent事件。addActionListener(ActionListenerlistner)獲得監(jiān)視器。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第44

頁5.JTextArea文本區(qū)(1)常用方法JTextArea(introws,intcolumns)構(gòu)造一個可見行和可見列分別是rows、columns的文本區(qū)。setLineWrap(booleanb):決定輸入的文本能否在文本區(qū)的右邊界自動換行;setWrapStyleWord(booleanb)決定是以單詞為界(b取true時)或以字符為界(b取false時)進行換行。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第45

頁append(Strings)尾加文本。insert(Strings,intx)在文本區(qū)的指定位置處插入文本。getCaretPosition()獲取文本區(qū)中輸入光標的位置copy():將文本區(qū)中選中的內(nèi)容拷貝剪貼板cut():將文本區(qū)中選中的內(nèi)容剪切到剪貼板。paste():將剪貼板上的文本數(shù)據(jù)粘貼在文本區(qū)中。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第46

頁【例11-10】2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第47

頁(2)文本區(qū)上的DucumentEvent事件DucumentEven類在javax.swing.event包中。用戶在文本區(qū)組件的UI代表的視圖中進行文本編輯操作,使得文本區(qū)中的文本內(nèi)容發(fā)生變化,將導(dǎo)致該組件所維護的文檔模型中的數(shù)據(jù)發(fā)生變化,從而導(dǎo)致DucumentEvent事件的發(fā)生。需要使用addDucumentListener()方法向組件維護的文檔注冊監(jiān)視器。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第48

頁監(jiān)視器需實現(xiàn)DucumentListener接口,該接口中有三個方法:publicvoidchangedUpdate(DocumentEvente)publicvoidremoveUpdate(DocumentEvente)publicvoidinsertUpdate(DocumentEvente)文本區(qū)調(diào)用getDocument()方法返回維護的文檔,該文檔是實現(xiàn)了Document接口類的一個實例?!纠?1-11】2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第49

頁11.7按鈕與標簽組件1.JButton按鈕組件JButton類創(chuàng)建的一個對象就是一個按鈕。JButton(Stringtext)創(chuàng)建名字是text的按鈕。publicJButton(Iconicon)創(chuàng)建帶有圖標icon的按鈕。publicJButton(Stringtext,Iconicon)創(chuàng)建名字是text且?guī)в袌D標icon的按鈕publicvoidsetText(Stringtext)重新設(shè)置當(dāng)前按鈕的名字,名字由參數(shù)text指定。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第50

頁publicStringgetText()獲取當(dāng)前按鈕上的名字。publicvoidsetIcon(Iconicon)重新設(shè)置當(dāng)前按鈕上的圖標。publicIcongetIcon()按鈕調(diào)用該方法可以獲取當(dāng)前按鈕上的圖標publicvoidsetHorizontalTextPosition(inttextPosition)設(shè)置按鈕名字相對按鈕上圖標的水平位置,參數(shù)textPosition的有效值是:AbstractButton.LEFT、AbstractButton.CENTERT、AbstractButton.RIGHT。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第51

頁publicvoidsetVerticalTextPosition(inttextPosition)設(shè)置按鈕上名字相對按鈕上圖標的垂直位置。publicvoidsetMnemonic(charmnemonic)設(shè)置按鈕的鍵盤激活方式,mnemonic的有效值是:’a’~’z’。publicvoidaddActionListener(ActionListener)向按鈕增加動作監(jiān)視器。publicvoidremoveActionListener(ActionListener)移去按鈕上的動作監(jiān)視器。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第52

頁【例11-12】單擊按鈕切換按鈕上的圖標2.標簽組件JLabel類負責(zé)創(chuàng)建標簽對象。JLabel類的構(gòu)造方法:publicJLabel()創(chuàng)建沒有名字的標簽。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第53

頁publicJLabel(Strings)創(chuàng)建名字是s的標簽,s在標簽中靠左對齊。publicJLabel(Strings,intaligment)aligment決定標簽中的文字在標簽中的水平對齊方式。publicJLabel(Iconicon)創(chuàng)建具有圖標icon的標簽,icon在標簽中靠左對齊。publicJLabel(Strings,Iconicon,intaligment)創(chuàng)建名字是s,具有圖標icon的標簽;參數(shù)aligment決定標簽中的文字和圖標做為一個整體在標簽中的水平對齊方式。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第54

頁JLabel類的常用方法:StringgetText()獲取標簽的名字。voidsetText(Strings)設(shè)置標簽的名字是s。IcongetIcon()獲取標簽的圖標。voidsetIcon(Iconicon)設(shè)置標簽的圖標是icon。返回2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第55

頁voidsetHorizontalTextPosition(inta)參數(shù)a確定名字相對于圖標的位置,a的取值是:JLabel.LEFT,JLabel.RIGHT。voidsetVerticalTextPosition(inta)參數(shù)a確定名字相對于JLabel上的圖標的位置,參數(shù)a取值是:JLabel.BOTTOM,JLabel.TOP。返回2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第56

頁11.8復(fù)選框與單選按鈕組件1.JCheckBox復(fù)選框復(fù)選框提供兩種狀態(tài):選中,未選中。(1)JCheckBox類常用方法publicJCheckBox()創(chuàng)建一個沒有名字的復(fù)選框。publicJCheckBox(Stringtext)創(chuàng)建一個名字是text的復(fù)選框。publicJCheckBox(Iconicon)創(chuàng)建一個帶有默認圖標icon,但沒有名字的復(fù)選框。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第57

頁publicJCheckBox(Stringtext,Iconicon)創(chuàng)建一個帶有默認圖標和名字text的復(fù)選框。publicvoidsetIcon(IcondefaultIcon)設(shè)置復(fù)選框上的默認圖標。publicvoidsetSelectedIcon(IconselectedIcon)設(shè)置復(fù)選框選中狀態(tài)下的圖標。publicbooleanisSelected()復(fù)選框處于選中狀態(tài)返回true,否則返回false。如果不對復(fù)選框進行初始化設(shè)置,默認的初始化設(shè)置均為為選中。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第58

頁(2)復(fù)選框上的ItemEvent事件復(fù)選框可以發(fā)生ItemEvent事件,JCheckBox類提供了addItemListener方法。處理ItemEvent事件的接口是ItemListener,創(chuàng)建監(jiān)視器的類必須實現(xiàn)ItemListener接口,該接口中只有一個的方法。當(dāng)在復(fù)選框發(fā)生ItemEvent事件時,監(jiān)視器將自動調(diào)用接口方法publicvoiditemStateChanged(ItemEvente)對發(fā)生的事件作出處理。ItemEvent類中的方法getItemSelectable()返回Itemevent事件的事件源。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第59

頁【例11-13】2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第60

頁2.JRadioButton單選按鈕一組單選按鈕同一時刻只能有一個被選中。當(dāng)創(chuàng)建了若干個單選按鈕后,應(yīng)使用ButtonGroup再創(chuàng)建一個對象,然后利用這個對象把這若干個單選按鈕歸組。歸到同一組的單選按鈕每一時刻只能選一。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第61

頁11.9列表組件1.下拉列表常用方法publicJComboBox()構(gòu)造方法,創(chuàng)建一個沒有選項下拉列表。publicvoidaddItem(ObjectanObject)增加選項。publicintgetSelectedIndex()返回當(dāng)前下拉列表中被選中的選項的索引,索引的起始值是0。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第62

頁publicObjectgetSelectedItem()返回當(dāng)前下拉列表中被選中的選項。publicvoidremoveItemAt(intanIndex)從下拉列表的選項中刪除索引值是anIndex選項。publicvoidremoveAllItems()刪除全部選項。publicvoidaddItemListener(ItemListener)向下拉列表增加ItemEvent事件的監(jiān)視器。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第63

頁2.下拉式列表上的ItemEvent事件對于下拉式列表事件源,可以發(fā)生ItemEvent事件。當(dāng)下拉式列表獲得監(jiān)視器之后,用戶在下拉列表的選項中選中某個選項時就發(fā)生ItemEvent事件,ItemEvent類將自動創(chuàng)建一個事件對象。返回2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第64

頁【例11-14】2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第65

頁11.10表格組件使用JTable可以創(chuàng)建一個表格對象。構(gòu)造方法:JTable(Objectdata[][],ObjectcolumnName[])。參數(shù)columnName用來指定表格的列名。用戶在表格單元中輸入的數(shù)據(jù)都被認為是一個Object對象,用戶通過表格視圖對表格單元中的數(shù)據(jù)進行編輯,以達到修改二維數(shù)組data中對應(yīng)的數(shù)據(jù)。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第66

頁【例11-15】返回2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第67

頁11.11樹組件1.樹與節(jié)點JTree類的實例稱作樹組件。要想構(gòu)造一個樹組件,必須要事先創(chuàng)建出稱作節(jié)點的對象。任何實現(xiàn)MutableTreeNode接口的類創(chuàng)建的對象都可以成為樹上的節(jié)點,樹中最基本的對象叫做節(jié)點,樹以垂直方式顯示數(shù)據(jù),每行顯示一個節(jié)點。樹中只有一個根節(jié)點,所有其它節(jié)點從這里引出。除根節(jié)點外,其它節(jié)點分為兩類:一類是帶子節(jié)點的分支節(jié)點,另一類是不帶子節(jié)點的葉節(jié)點。每一個節(jié)點關(guān)聯(lián)著一個描述該節(jié)點的文本標簽和圖像圖標。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第68

頁DefaultMutableTreeNode類是實現(xiàn)了MutableTreeNode接口的類,可以使用這個類為要創(chuàng)建的樹準備節(jié)點。DefaultMutableTreeNode類的兩個常用的構(gòu)造方法是:DefaultMutableTreeNode(ObjectuserObject)DefaultMutableTreeNode(ObjectuserObject,booleanallowChildren)。第一個構(gòu)造方法創(chuàng)建的節(jié)點默認可以有子節(jié)點,第二個構(gòu)造方法創(chuàng)建的節(jié)點有無子節(jié)點要根據(jù)。參數(shù)allowChildren的真假來判斷,allowChildren為true時有子節(jié)點,為假時無子節(jié)點。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第69

頁2.樹上的TreeSelectionEvent事件樹組件可以觸發(fā)TreeSelectionEvent事件,樹使用addTreeSelectionListener(TreeSelectionListenerlistener)方法獲得一個監(jiān)視器。此接口中的方法是:publicvoidvalueChanged(TreeSelectionEvente)getLastSelectedPathComponent()獲取選中的節(jié)點getUserObject()得到與節(jié)點相關(guān)的信息。返回2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第70

頁【例11-16】2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第71

頁11.12進度條組件1.JProgressBar類使用JProgressBar類創(chuàng)建進度條組件。該組件能用一種顏色動態(tài)地填充自己,以便顯示某任務(wù)完成的百分比。3個常用的構(gòu)造函數(shù):JProgessBar()JProgressBar(intmin,intmax)JProgressBar(intorient,intmin,intmax)進度條默認地用一種顏色水平填充自己,進度條通過調(diào)用方法:pulicvoidsetsetValue(intn)來填充自己。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第72

頁進度條的最大值和最小值分別是缺省值100和0。setMinimum(intmin),setMaximum(intmax)【例11-17】用進度條模擬顯示線程的計算速度,一個線程用遞歸算法輸出Fibinacci序列的前100項;另一個線程使用循環(huán)輸出Fibinacci序列的前100項。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第73

頁2.帶進度條的輸入流輸入流類ProgressMonitorInputStream可以顯示文件的讀取進度。構(gòu)造方法:ProgressMonitorInputStream(Conmponentc,Strings,InputStream);返回

【例10-18】2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第74

頁11.13組件的常見方法JComponent類是所有組件的父類。組件都是矩形形狀;組件本身有一個默認的坐標系,組件的左上角的坐標值是(0,0)。如果一個組件的寬是20,高是10,那么,該坐標系中,x坐標的最大值是20;y坐標的最大值是10。

組件組件上的坐標系2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第75

頁1.組件的顏色publicvoidsetBackground(Coloec)設(shè)置組件的背景色。publicvoidsetForeground(Coloec)設(shè)置組件的前景色。publicColorgetBackground(Colorc)獲取組件的背景色。publicColorgetForeground(Colorc)獲取組件的前景色。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第76

頁Color類是java.awt包中的類,該類創(chuàng)建的對象稱為顏色對象。publicColor(intred,intgreen,ingblue)可以創(chuàng)建一個顏色對象,其中red、green、blue的取值在0到255之間。2.組件透明組件默認是不透明的。publicvoidsetOpaque(booleanisOpaque)設(shè)置組件是否不透明;參數(shù)isOpaque取false時組件被設(shè)置為透明,取值true時組件被設(shè)置為不透明。publicbooleanisOpaque()當(dāng)組件不透明時該方法返回true,否則返回false。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第77

頁3.組件的邊框組件默認的邊框是一個黑邊的矩形。publicvoidsetBorder(Borderborder)設(shè)置組件的邊框。setBorder()的參數(shù)是一個接口,必須向該參數(shù)傳遞一個實現(xiàn)接口Border類的實例,如果傳遞一個null,組件將取消邊框。publicBordergetBorder()返回邊框。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第78

頁4.組件的字體publicvoidsetFont(Fontf)設(shè)置組件上的字體。publicFontgetFont(Fontf)獲取組件上的字體。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第79

頁java.awt包中的Font類創(chuàng)建的對象稱為字體對象。構(gòu)造方法publicFont(Stringname,intstyle,intsize);創(chuàng)建字體對象,name是字體的名字,如果系統(tǒng)不支持字體的名字,將取默認的名字創(chuàng)建字體對象。style決定字體的樣式,取值是一個整數(shù)。在創(chuàng)建字體對象時,應(yīng)當(dāng)給出一個合理的字體名字,也就是說,程序所在的計算機系統(tǒng)上有這樣的字體名字。如果在創(chuàng)建字體對象時,沒有給出一個合理的字體名字,那么該字體在特定平臺的字體系統(tǒng)名稱為默認名稱。

【例11-19】2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第80

【例11-19】2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第81

頁5.組件的大小與位置publicvoidsetSize(intwidth,intheight)設(shè)置組件的大小,參數(shù)width、height指定組件的寬度和高度。publicvoidsetLocation(intx,inty)設(shè)置組件在容器中的位置,參數(shù)x,y是組件距容器的左邊界x個像素,距容器的上邊界y個像素。publicDimensiongetSize()返回一個Dimension對象的引用,該對象實體中含有名字是width和height的成員變量,也就是當(dāng)前組件的寬度和高度。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第82

頁publicPointgetLocation(intx,inty)返回一個Point對象的引用,該對象實體中含有名字是x和y的成員變量,就是組件的左上角在容器的坐標系中的x坐標和y坐標。publicvoidsetBounds(intx,inty,intwidth,intheight)設(shè)置組件在容器中的位置和組件的大小。publicRectanglegetBounds()返回一個Rectangle對象的引用,該對象實體中含有名字是x、y、width和height的成員變量,分別是當(dāng)前組件左上角在容器坐標系中的x坐標和y坐標,寬度和高度。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第83

頁6.組件的激活與可見性publicvoidsetEnabled(booleanb)設(shè)置組件是否可被激活;當(dāng)參數(shù)b取值true時,組件可以被激活,當(dāng)參數(shù)b取值false時,組件不可激活。默認情況下,組件是可以被激活的。publicvoidsetVisible(boolean)設(shè)置組件在該容器中的可見性;當(dāng)參數(shù)b取值true時,組件在容器中可見,當(dāng)參數(shù)b取值false時,組件在容器中不可見。除了Window型組件外,其它類型組件默認是可見的。返回2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第84

頁11.14窗口事件1.WindowListener接口當(dāng)一個JFrame窗口被激活、撤消激活、打開、關(guān)閉、圖標化或撤消圖標化時,就引發(fā)了窗口事件,即WindowEvent創(chuàng)建一個窗口事件對象。窗口使用addWindowlistener方法獲得監(jiān)視器,創(chuàng)建監(jiān)視器對象的類必須實現(xiàn)WindowListener接口。該接口中有7個不同的方法:publicvoidwindowActivated(WindowEvente) 將Window設(shè)置為活動Window時調(diào)用。publicvoidwindowClosed(WindowEvente) 因?qū)Υ翱谡{(diào)用dispose而將其關(guān)閉時調(diào)用。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第85

頁publicvoidwindowClosing(WindowEvente) 用戶試圖從窗口的系統(tǒng)菜單中關(guān)閉窗口時調(diào)用。publicvoidwindowDeactivated(WindowEvente) 當(dāng)Window不再是活動Window時調(diào)用。publicvoidwindowIconified(WindowEvente) 窗口從正常狀態(tài)變?yōu)樽钚』癄顟B(tài)時調(diào)用。publicvoidwindowDeiconified(WindowEvente) 當(dāng)窗口撤消圖標化時,窗口的監(jiān)視器調(diào)用該方法。publicvoidwindowOpened(WindowEvente) 當(dāng)窗口打開時,窗口的監(jiān)視器調(diào)用該方法。getWindow() 獲取發(fā)生窗口事件的窗口。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第86

頁2.WindowAdapter適配器indowAdapter類是實現(xiàn)了WindowListener接口的類?!纠?1-20】使用WindowAdapter的匿名類(匿名類就是WindowAdapter的一個子類)做窗口的監(jiān)視器。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第87

頁11.15鼠標事件1.鼠標事件的觸發(fā)組件觸發(fā)鼠標事件的7種操作:鼠標指針從組件之外進入鼠標指針從組件內(nèi)退出鼠標指針停留在組件上時,按下鼠標鼠標指針停留在組件上時,釋放鼠標鼠標指針停留在組件上時,單擊鼠標在組件上拖動鼠標指針在組件上運動鼠標指針鼠標事件的類型是MouseEvent,即組件觸發(fā)鼠標事件時,MouseEvent類自動創(chuàng)建一個事件對象。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第88

頁2.MouseListener接口與MouseMotionListener接口Java分別使用兩個接口來處理鼠標事件(1)MouseListener接口如果事件源使用addMouseMotionListener(MouseListenerlistener)獲取監(jiān)視器,那么用戶的下列5種操作可使得事件源觸發(fā)鼠標事件:鼠標指針從組件之外進入鼠標指針從組件內(nèi)退出鼠標指針停留在組件上面時,按下鼠標鼠標指針停留在組件上面時,釋放鼠標鼠標指針停留在組件上面時,單擊或連續(xù)單擊鼠標2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第89

頁創(chuàng)建監(jiān)視器的類必須要實現(xiàn)MouseListener接口,該接口有5個方法:mousePressed(MouseEvent) 負責(zé)處理鼠標按下觸發(fā)的鼠標事件。mouseReleased(MouseEvente) 負責(zé)處理鼠標釋放觸發(fā)的鼠標事件。mouseEntered(MouseEvente) 負責(zé)處理鼠標進入組件觸發(fā)的鼠標事件。mouseExited(MouseEvente) 負責(zé)處理鼠標退出組件觸發(fā)的鼠標事件。mouseClicked(MouseEvente) 負責(zé)處理鼠標單擊或連擊觸發(fā)的鼠標事件。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第90

頁(2)MouseMotionListener接口如果事件源使用addMouseMotionListener(MouseListenerlistener)獲取監(jiān)視器,那么用戶的下列兩種操作可使得事件源觸發(fā)鼠標事件:在組件上拖動鼠標指針在組件上運動鼠標指針相應(yīng)的有兩個處理接口的方法:mouseDragged(MouseEvente)負責(zé)處理鼠標拖動事件。mouseMoved(MouseEvente)負責(zé)處理鼠標移動事件。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第91

頁3.MouseEvent類在處理鼠標事件時,程序經(jīng)常關(guān)心鼠標在當(dāng)前組件坐標系中的位置,以及觸發(fā)鼠標事件使用的是鼠標的左鍵或右鍵等信息。MouseEvent類中有下列幾個重要的方法:getX() 鼠標事件調(diào)用該方法返回觸發(fā)當(dāng)前鼠標事件時,鼠標指針在事件源坐標系中的x-坐標。getY() 鼠標事件調(diào)用該方法返回觸發(fā)當(dāng)前鼠標事件時,鼠標指針在事件源坐標系中的y-坐標。getClickCount() 鼠標事件調(diào)用該方法返回鼠標被連續(xù)單擊的次數(shù)。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第92

頁getModifiers()鼠標事件調(diào)用該方法返回一個整數(shù)值,如果是通過鼠標左鍵觸發(fā)的鼠標事件,返回的值等于InputEvent類中的類常量BUTTON1_MASK;如果是右鍵返回的是InputEvent類中的類常量BUTTON3_MASK來表示。getSource() 鼠標事件調(diào)用該方法返回觸發(fā)當(dāng)前鼠標事件的事件源?!纠?1-21】分別監(jiān)視按鈕、標簽和窗口內(nèi)容面板上的鼠標事件,當(dāng)發(fā)生鼠標事件時,獲取鼠標的坐標值,注意,事件源的坐標系的左上角是原點。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第93

頁4.用鼠標拖動組件用鼠標拖動容器中的組件時,可以先獲取鼠標指針在組件坐標系中的坐標x,y,以及組件的左上角在容器坐標系中的坐標a,b;如果在拖動組件時,想讓鼠標指針的位置相對于拖動的組件保持靜止,那么,組件左上角在容器坐標系中的位置應(yīng)當(dāng)是a+x-x0,a+y-y0,其中x0,y0是最初在組件上按下鼠標時,鼠標指針在組件坐標系中的位置坐標。【例11-22】窗體中添加了一個分層窗格,分層窗格中添加了一些組件。該例子使用MouseListener和MouseMotionListener接口處理鼠標事件。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第94

頁5.彈出式菜單單擊鼠標右鍵出現(xiàn)“彈出式菜單”是用戶熟悉和常用的操作。彈出式菜單由JPopupMenu類負責(zé)創(chuàng)建。構(gòu)造方法:publicJPopupMenu() 構(gòu)造無標題彈出式菜單publicJPopupMenu(Stringlabel)

構(gòu)造由參數(shù)label指定標題的彈出式菜單。通過調(diào)用publicvoidshow(Componentinvoker,intx,inty) 設(shè)置彈出式菜單在組件invoker上的彈出的位置。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第95

頁【例11-23】在文本區(qū)上單擊鼠標右鍵時,在鼠標位置處彈出菜單,用戶選擇相應(yīng)的菜單項拷貝、剪貼等操作。返回2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第96

頁11.16焦點事件組件可以觸發(fā)焦點事件。組件可以使用publicvoidaddFocusListener(FocusListenerlistener)增加焦點事件監(jiān)視器。當(dāng)組件具有焦點監(jiān)視器后,如果組件從無輸入焦點變成有輸入焦點或從有輸入焦點變成無輸入焦點都會觸發(fā)FocusEvent事件。創(chuàng)建監(jiān)視器的類必須要實現(xiàn)FocusListener接口,該接口有兩個方法:publicvoidfocusGained(FocusEvente)publicvoidfocusLost(FocusEvente)2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第97

頁11.17鍵盤事件當(dāng)一個組件處于激活狀態(tài)時,組件可以成為觸發(fā)KeyEvent事件的事件源。當(dāng)某個組件處于激活狀態(tài)時,如果用戶敲擊鍵盤上一個鍵就導(dǎo)致這個組件觸發(fā)KeyEvent事件。1.使用KeyListener接口處理鍵盤事件組件使用addKeyListener方法獲得監(jiān)視器。監(jiān)視器是一個對象,創(chuàng)建該對象的類必須實現(xiàn)接口KeyListener。接口KeyListener中有3個方法:2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第98

頁publicvoidkeyPressed(KeyEvente)publicvoidkeyTyped(KeyEvente)publicvoidKeyReleased(KeyEvente)當(dāng)按下鍵盤上某個鍵時,監(jiān)視器就會發(fā)現(xiàn),然后方法keyPressed會自動執(zhí)行,并且KeyEvent類自動創(chuàng)建一個對象傳遞給方法keyPressed中的參數(shù)e。方法keyTyped是Pressedkey和keyReleased方法的組合,當(dāng)鍵被按下又釋放時,keyTyped方法被調(diào)用。用KeyEvent類的publicintgetKeyCode()方法,可以判斷哪個鍵被按下、敲擊或釋放,getKeyCode方法返回一個鍵碼值。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第99

頁【例11-24】通過處理鍵盤事件來實現(xiàn)軟件序列號的輸入。當(dāng)文本框獲得輸入焦點后,用戶敲擊鍵盤將使得當(dāng)前文本框觸發(fā)KeyEvent事件,在處理事件時,程序檢查文本框中光標的位置,如果光標已經(jīng)到達指定位置,就將輸入焦點轉(zhuǎn)移到下一個文本框。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第100

頁2.處理復(fù)合鍵鍵盤事件KeyEvent對象調(diào)用getModifiers()方法,可以返回下列的整數(shù)值,它們分別是InputEvent類的類常量ALT_MASK、CTRL_MASK、SHIFT_MASK【例11-25】用戶通過CTRL+C、CTRL+X和CTRL+V實現(xiàn)文本區(qū)內(nèi)容的拷貝、剪切和粘貼。返回2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第101

頁11.18AWT線程1.AWT線程當(dāng)Java程序包含圖形用戶界面(GUI)時,Java虛擬機在運行應(yīng)用程序時會自動啟動更多的線程。AWT-EventQuecue-()線程負責(zé)處理GUI事件,AWT-Windows線程負責(zé)將窗體或組件繪制到桌面。2.掛起、恢復(fù)和終止線程通過GUI界面事件,即在AWT-EventQuecue線程中,可以通知其它線程開始運行、掛起、恢復(fù)或死亡。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第102

頁所謂掛起一個線程就是讓線程暫時讓出CPU的使用權(quán)限,暫時停止執(zhí)行,掛起一個線程可以使用wait方法?;謴?fù)線程就是讓曾掛起的線程恢復(fù)執(zhí)行過程,即從曾中斷處繼續(xù)線程的執(zhí)行。為了恢復(fù)線程,可以讓主線程或其它線程執(zhí)行notifyAll()方法,通知掛起的線程繼續(xù)執(zhí)行。終止線程就是讓線程結(jié)束run方法的執(zhí)行進入死亡狀態(tài)?!纠?1-26】通過單擊“開始”按鈕啟動線程,該線程負責(zé)移動一個紅色的標簽。通過單擊“掛起”按鈕暫時中斷線程的執(zhí)行,單擊“恢復(fù)”按鈕恢復(fù)線程。通過單擊“終止”按鈕終止線程。返回2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第103

頁10.19計時器使用Timer類的構(gòu)造方法:Timer(inta,Objectb)創(chuàng)建一個計時器。參數(shù)a的單位是豪秒,確定計時器每隔a毫秒“震鈴”一次;參數(shù)b是計時器的監(jiān)視器。計時器發(fā)生的震鈴事件是ActinEvent類型事件。當(dāng)震鈴事件發(fā)生時,監(jiān)視器就會監(jiān)視到這個事件,監(jiān)視器就回調(diào)ActionListener接口中的actionPerformed方法?!纠?1-27】使用了計時器,使得標簽每隔一秒鐘顯示一個漢字。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第104

頁11.20MVC設(shè)計模式MVC是一種通過三個不同部分構(gòu)造一個軟件或組件的理想辦法。模型(model)用于存儲數(shù)據(jù)的對象。視圖(view)為模型提供數(shù)據(jù)顯示的對象??刂破鳎╟ontroller)處理用戶的交互操作,對于用戶的操作作出響應(yīng),讓模型和視圖進行必要的交互,即通過視圖修改、獲取模型中的數(shù)據(jù);當(dāng)模型中的數(shù)據(jù)變化時,讓視圖更新顯示。2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第105

頁【例11-28】 首先編寫一個封裝三角梯形的類,然后再編寫一個窗口。要求窗口使用三個文本框和一個文本區(qū)為三角形對象中的數(shù)據(jù)提供視圖,其中三個文本框用來顯示和更新梯形對象的上底、下底和高的長度;文本區(qū)對象用來顯示梯形的面積。窗口中用一個按鈕作為控制器,用戶單擊該按鈕后,程序用3個文本框中的數(shù)據(jù)分別作為梯形的上底、下底和高的長度,并將計算出的三角形的面積顯示在文本區(qū)中2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第106

頁11.21播放音頻假設(shè)音頻文件hello.au位于應(yīng)用程序當(dāng)前目錄中,播放音頻的步驟如下:1.創(chuàng)建File對象FilemusicFile=newFile("hello.au");2.獲取URI對象URIuri=musicFile.toURI();3.獲取URL對象URIurl=uri.toURI();2023/4/1第10章基于Swing的圖形用戶界面設(shè)計第107

頁4.創(chuàng)建音頻對象使用Applet的一個靜態(tài)的方法(類方法):newAudioClip(.URL)根據(jù)參數(shù)url封裝的音頻獲得一個可用于播放

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論