




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章SWT用戶(hù)界面計(jì)算機(jī)科學(xué)與技術(shù)教研室龔平本章主要內(nèi)容SWT簡(jiǎn)介MVC模式與SWTSWT布局管理器SWT文本輸入選擇組件SWT菜單SWT對(duì)話框(Dialog類(lèi))2和其它語(yǔ)言一樣,Java也具有開(kāi)發(fā)圖形用戶(hù)界面的功能。圖形用戶(hù)界面(GraphicalUserInterface,簡(jiǎn)稱(chēng)GUI,又稱(chēng)圖形用戶(hù)接口)是指采用圖形方式顯示的計(jì)算機(jī)操作用戶(hù)界面。6.1SWT簡(jiǎn)介早期的Java版本(JDK1.0和JDK1.1)采用的是AWT組件。AWT(AbstractWindowToolkit),最原始的JavaGUI工具包。利用AWT編寫(xiě)圖形用戶(hù)界面時(shí),實(shí)際上是在利用本地操作系統(tǒng)所提供的圖形庫(kù)。一個(gè)AWT應(yīng)用可能在Windows上表現(xiàn)很好可是到了Macintosh上幾乎不能使用,或者正好相反。(違背了Java“writeonce,runanywhere”的信條)AWT作為Java最弱的組件受到不小的批評(píng)。6.1.1AWT、Swing與SWT在JDK1.2版中,圖形用戶(hù)界面功能被大幅度地?cái)U(kuò)展,形成了稱(chēng)為Java基礎(chǔ)類(lèi)庫(kù)(JavaFoundationClasses,JFC)的一整套API集合,主要包括以下5個(gè)部分:抽象窗口工具;Swing圖形界面類(lèi)庫(kù);支持二維圖形的類(lèi)庫(kù)(Java2D);支持拖放的類(lèi)庫(kù)(DragandDrop);支持易用性的類(lèi)庫(kù)(Accessibility)
5Swing這些組件全都是用Java語(yǔ)言編寫(xiě)的,可運(yùn)行在任一支持JVM的平臺(tái)上,并且在不同的平臺(tái)上其表現(xiàn)是一致的。Swing是在AWT組件基礎(chǔ)上構(gòu)建的,而且提供了許多新的圖形用戶(hù)界面組件,因此它所提供的功能要比AWT的更廣泛、更強(qiáng)大。Swing組件沒(méi)有本地代碼,不依賴(lài)于具體的本機(jī)操作系統(tǒng)的支持,并且還有能力提供本地系統(tǒng)不支持的其它特性,這是它與AWT組件的最大區(qū)別。Swing也是Java技術(shù)的一種標(biāo)準(zhǔn)配置。SWT:TheStandardWidgetToolkitSWT是IBM公司推出的,其最大優(yōu)點(diǎn)是運(yùn)行速度快,能夠獲得與操作系統(tǒng)的內(nèi)部應(yīng)用程序相同的外觀。官方API文檔/swt/javadoc.php6.1.1AWT、Swing與SWTSWT使用操作系統(tǒng)提供的Widgets來(lái)渲染其圖形應(yīng)用程序,在Control類(lèi)中的對(duì)象在操作系統(tǒng)中有一個(gè)直接的對(duì)應(yīng)物,可以通過(guò)類(lèi)的句柄使用它。然而在Control類(lèi)之外,SWT還提供了不少的組件。具體的層次結(jié)構(gòu)如下圖所示。補(bǔ)充:三者的特性比較6.1.2SWT程序開(kāi)發(fā)步驟了解一下如何利用Eclipse進(jìn)行一個(gè)SWT程序的開(kāi)發(fā),它由以下4步組成:新建Java工程項(xiàng)目:HelloLabel;設(shè)置項(xiàng)目的建構(gòu)路徑,右鍵單擊項(xiàng)目名,BuildPath->ConfigureBuildPath,單擊AddExternalJARs;定位到eclipse\plugins中org.eclipse.swt.win32.win32.x86_3.100.1.v4236b.jar和org.eclipse.swt_3.100.1.v4236b.jar,單擊“打開(kāi)”按鈕;新建一個(gè)類(lèi)HelloLabel(代碼清單6-1)。
操作演示:利用MyEclipse進(jìn)行SWT開(kāi)發(fā)。6.1.3SWT中的包SWT中常用的包:org.eclipse.swt.widgets
org.eclipse.swt.layout
org.eclipse.swt.custom
org.eclipse.swt.event
org.eclipse.swt.graphics
org.eclipse.swt.ole.win32
6.2MVC模式與SWTMVC(Model-View-Controller)是軟件開(kāi)發(fā)過(guò)程中比較流行的設(shè)計(jì)思想。在了解MVC之前,首先要明確一點(diǎn),MVC是一種設(shè)計(jì)模式(設(shè)計(jì)思想),不是一種編程技術(shù)。MVC是一種交互界面的結(jié)構(gòu)組織模型。MVC由TrygveReenskaug提出,首先被應(yīng)用在SmallTalk-80環(huán)境中,是許多交互和界面系統(tǒng)的構(gòu)成基礎(chǔ),Microsoft的MFC基礎(chǔ)類(lèi)也遵循了MVC的思想。討論如下的一個(gè)場(chǎng)景:要做一個(gè)計(jì)算機(jī)等級(jí)考試成績(jī)查詢(xún)系統(tǒng),輸入準(zhǔn)考證號(hào)就可以顯示這個(gè)考生的成績(jī)。如何實(shí)現(xiàn)?有一種很容易想到的方案:寫(xiě)一個(gè)程序,接受用戶(hù)輸入并驗(yàn)證,同樣是這個(gè)程序,在數(shù)據(jù)庫(kù)中提取數(shù)據(jù)后顯示考試成績(jī)。但是,軟件需求可能是變化的。在系統(tǒng)投入使用后,可能會(huì)出現(xiàn)下列的情況:1.考試中心決定,成績(jī)的顯示應(yīng)該更美觀一些,要改變顯示方式。2.在驗(yàn)證信息時(shí)要多一些內(nèi)容,比如驗(yàn)證身份證號(hào)等等。3.數(shù)據(jù)庫(kù)“升級(jí)”了,數(shù)據(jù)庫(kù)變成了不同的名字,表結(jié)構(gòu)也變了,查詢(xún)時(shí)需要修改代碼。如果使用前面提到的方案,要解決這些問(wèn)題,就必須把程序的某一部分改掉。但是,最忌諱的就是在很長(zhǎng)的一段程序中修改很小的一部分,這樣做代價(jià)很高,并且在開(kāi)發(fā)過(guò)程中分工也很不方便。如:UI人員修改顯示方法時(shí),需要面對(duì)大量數(shù)據(jù)庫(kù)訪問(wèn)的代碼?;谶@個(gè)問(wèn)題,可以把程序拆成三個(gè)模塊來(lái)做。界面模塊(View),負(fù)責(zé)輸入查詢(xún)的準(zhǔn)考證號(hào),提交到驗(yàn)證模塊(Control),訪問(wèn)數(shù)據(jù)庫(kù),將提取的數(shù)據(jù)(成績(jī)和準(zhǔn)考證號(hào))封裝到模型(Model)中,再顯示到界面。適合分工、維護(hù)方便對(duì)于界面設(shè)計(jì)可變性的需求,MVC把交互系統(tǒng)的組成分解成模型、視圖、控制三種組件。6.2MVC模式與SWT現(xiàn)在結(jié)合JavaSWT來(lái)說(shuō)明MVC設(shè)計(jì)模式:模型(Model):是存儲(chǔ)SWT組件數(shù)據(jù)的地方,例如Table的Model會(huì)存儲(chǔ)表格上的所有數(shù)據(jù)。負(fù)責(zé)維護(hù)數(shù)據(jù)。模型通常提供訪問(wèn)和修改數(shù)據(jù)的方法。當(dāng)模型變化時(shí),這個(gè)模型還把事件發(fā)送給已登記的視圖,對(duì)此,視圖根據(jù)模型的變化來(lái)更新自己。視圖(View):指SWT組件的外觀顯示效果。負(fù)責(zé)提供模型的部分?jǐn)?shù)據(jù)的可視圖。
控制器(Controller):響應(yīng)用戶(hù)在SWT組件上的具體操作,為視圖處理事件。鼠標(biāo)和動(dòng)作監(jiān)聽(tīng)器等Swing監(jiān)聽(tīng)器都是MVC控制器。
6.3SWT布局管理器容器構(gòu)建在容器類(lèi)中,容器構(gòu)建在主窗體(Shell)中,主窗體也是容器。容器不僅可以容納組件,也可以容納容器。容器內(nèi)的組件,如何排序?如何調(diào)整組件的大小、位置?……由“布局管理器”負(fù)責(zé)。SWT提供了許多常用的布局管理器,其中org.eclipse.swt.layout包中四種布局管理器:FillLayout、RowLayout、GridLayout和FormLayout。FillLayout:充滿式布局,在容器中以相同的大小以單行或單列排列組件。RowLayout:行列式布局,以單行或多行的方式定制組件的排列方式。GridLayout:網(wǎng)格式布局,以網(wǎng)格的方式進(jìn)行布局,組件可以占用指定的一個(gè)或幾個(gè)網(wǎng)格。FormLayout:表格式布局,通過(guò)定義組件四個(gè)邊的距離來(lái)排列組件,被引用的相對(duì)的組件可以是父組件,也可以是同一容器中的其它組件。6.3.1充滿式布局充滿式布局(FillLayout類(lèi))是最簡(jiǎn)單的布局管理器。它把組件按一行或一列充滿整個(gè)容器,并強(qiáng)制組件的大小一致。一般,組件的高度與最高組件相同,寬度與最寬組件相同。FillLayoutdoesnotwrap,butyoucanspecifymarginsandspacing。如果容器中只有一個(gè)組件,則該組件會(huì)充滿整個(gè)容器。構(gòu)造方法:FillLayout():創(chuàng)建按一行充滿容器的對(duì)象。FillLayout(inttype):創(chuàng)建按指定類(lèi)型充滿容器的對(duì)象,指定類(lèi)型(type)有:SWT.HORIZONTAL:按一行充滿容器。SWT.VERTICAL:按一列充滿容器。代碼清單6-2DisplayInstancesofthisclassareresponsibleformanagingtheconnectionbetweenSWTandtheunderlyingoperatingsystem.獲得一個(gè)Display的對(duì)象:Display類(lèi)提供了如下常用做法:publicstatic
Display
getDefault()常用構(gòu)造方法public
Display()Shell相當(dāng)于應(yīng)用程序的主窗體。構(gòu)造方法:public
Shell()public
Shell(Display
display)public
Shell(Display
display,int
style)public
Shell(int
style)public
Shell(Shell
parent)public
Shell(Shell
parent,int
style)通過(guò)案例6-2,可以看出SWT程序的步驟:
1.創(chuàng)建一個(gè)Display對(duì)象。Display對(duì)象是SWT和操作系統(tǒng)通信的橋梁。2.創(chuàng)建一個(gè)或者多個(gè)Shell對(duì)象。Shell代表了程序的窗口。3.在Shell內(nèi)創(chuàng)建各種部件(widget),如按鈕、下拉框和列表等。4.對(duì)各個(gè)部件進(jìn)行初始化(外觀、狀態(tài)等),同時(shí)為各種部件的事件創(chuàng)建監(jiān)聽(tīng)器(listener)。監(jiān)聽(tīng)器可以監(jiān)聽(tīng)窗口的消息。(此案例沒(méi)有添加監(jiān)聽(tīng)器,將會(huì)在第7章重點(diǎn)學(xué)習(xí)監(jiān)聽(tīng)器。)5.調(diào)用Shell對(duì)象的open()方法以顯示窗體。6.對(duì)各種事件進(jìn)行監(jiān)聽(tīng)并處理,直到程序發(fā)出退出消息。7.調(diào)用Display對(duì)象的dispose()方法以結(jié)束程序。6.3.2行列式布局行列式布局(RowLayout類(lèi))可以使組件折行顯示,可以設(shè)置邊界距離和間距。另外,還可以對(duì)每個(gè)組件通過(guò)setLayoutData()方法設(shè)置RowData對(duì)象。RowData用來(lái)設(shè)置組件的大?。╳idthandheight)
。6.3.2行列式布局1)構(gòu)造方法:RowLayout()創(chuàng)建按行放置組件的對(duì)象。RowLayout(inttype)創(chuàng)建按指定類(lèi)型放置組件的對(duì)象。指定類(lèi)型(type)有:SWT.VERTICAL按列放置組件。SWT.HORIZONTAL按行放置組件。6.3.2行列式布局2)常用屬性:intmarginWidth:
marginWidthspecifiesthenumberofpixelsofhorizontalmarginthatwillbeplacedalongtheleftandrightedgesofthelayout.TmarginHeight:組件距容器上、下邊緣的高度(像素),默認(rèn)值為0。intmarginTop:組件距容器上邊緣的距離(像素),默認(rèn)值為3。intmarginBottom:intmarginLeft:intmarginRight:intspacing:組件之間的距離,默認(rèn)值為3。6.3.2行列式布局booleanjustify:如果該屬性為true,則組件間的距離隨容器的拉伸而變大。默認(rèn)值為false。booleanwrap:如果該屬性為true,則當(dāng)容器空間不足時(shí)會(huì)自動(dòng)折行;如果該屬性為false,不自動(dòng)折行。默認(rèn)值為true。booleanpack:如果該屬性為true,組件大小為設(shè)定值;如果該屬性為false,則強(qiáng)制組件的大小相同。默認(rèn)值為type:使組件按指定式樣放置,(type=SWT.HORIZONTAL|SWT.VERTICAL),默認(rèn)為按行放置,默認(rèn)值為SWT.HORIZONTAL。6.3.2行列式布局3)RowData類(lèi):RowData稱(chēng)為RowLayout的布局?jǐn)?shù)據(jù)類(lèi),可用于改變?nèi)萜髦薪M件的外觀形狀。其構(gòu)造方法:public
RowData()RowData(intwidth,intheight)public
RowData(Point
point)例如:Buttonbt1=newButton(shell,SWT.PUSH);//創(chuàng)建按鈕bt1.setText("按鈕1");RowDatarowdata=newRowData(60,30);//創(chuàng)建布局?jǐn)?shù)據(jù)類(lèi)的對(duì)象bt1.setLayoutData(rowdata);//設(shè)置按鈕的布局?jǐn)?shù)據(jù)代碼清單6-36.3.3網(wǎng)格式布局網(wǎng)格式布局(GridLayout類(lèi))是實(shí)用而且功能強(qiáng)大的標(biāo)準(zhǔn)布局,也是較為復(fù)雜的一種布局。這種布局把容器分成網(wǎng)格,把組件放置在網(wǎng)格中。GridLayout專(zhuān)用的布局?jǐn)?shù)據(jù)類(lèi)是GridData。GridLayout的強(qiáng)大之處在于它可以通過(guò)GridData來(lái)設(shè)置每一個(gè)組件的外觀形狀。GridLayout的構(gòu)造方法:public
GridLayout()public
GridLayout(int
numColumns,boolean
makeColumnsEqualWidth)1)GridLayout的屬性intnumColumns:設(shè)置容器的列數(shù),組件從左到右按列放置,當(dāng)組件數(shù)大于列數(shù)時(shí),下一個(gè)組件將自動(dòng)添加新的一行。默認(rèn)值為1列。booleanmakeColumnsEqualWidth:強(qiáng)制使列都具有相同的寬度,默認(rèn)值為marginWidth:默認(rèn)值為5marginHeight:intmarginLeft、marginTop、marginRight、marginBottom:默認(rèn)值0inthorizontalSpacing:設(shè)置列與列之間的間隔,默認(rèn)值為5。intverticalSpacing:設(shè)置行與行之間的間隔,默認(rèn)值為5。代碼清單6-42)GridData類(lèi)GridDataisthelayoutdataobjectassociatedwithGridLayout.GridData常用的構(gòu)造方法如下:GridData():創(chuàng)建一個(gè)屬性值為默認(rèn)值的對(duì)象。GridData(inttype):創(chuàng)建一個(gè)指定類(lèi)型(type)的對(duì)象。GridData常用類(lèi)型如下:GridData.FILL:通常與GridData類(lèi)的對(duì)象屬性horizontalAlignment和verticalAlignment配合使用,充滿對(duì)象屬性指定的空間。GridData.FILL_HORIZONTAL水平充滿,組件充滿網(wǎng)格水平方向的空間。GridData.FILL_VERTICAL垂直充滿,組件充滿網(wǎng)格垂直方向的空間。GridData.FILL_BOTH雙向充滿,組件充滿水平和垂直方向的空間。GridData.HORIZONTAL_ALIGN_BEGINNING水平對(duì)齊靠左,組件在網(wǎng)格中靠左放置。GridData.HORIZONTAL_ALIGN_CENTER水平對(duì)齊居中,組件在網(wǎng)格中居中放置。GridData.HORIZONTAL_ALIGN_END水平對(duì)齊靠右,組件在網(wǎng)格中靠右放置。GridData常用對(duì)象屬性如下:inthorizontalSpan設(shè)置組件占用的列數(shù),默認(rèn)值為1。intverticalSpan設(shè)置組件占用的行數(shù),默認(rèn)值為1。booleangrabExcessHorizontalSpace搶占額外的水平空間。booleangrabExcessVerticalSpace搶占額外的垂直空間。inthorizontalAlignment設(shè)置組件的對(duì)齊方式為水平方向。intverticalAlignment設(shè)置組件的對(duì)齊方式為垂直方向。代碼清單6-56.3.4表格式布局表格式布局(FormLayout類(lèi))是一種非常靈活、精確的布局方式,這個(gè)布局是SWT2.0版新增的。FormLayout也有專(zhuān)用的布局?jǐn)?shù)據(jù)類(lèi)FormData,此外,還增加了一個(gè)FormAttachment類(lèi)。FormAttachment定義了組件的四邊與父容器(Shell、Composite等)的邊距,為保證組件在父容器中的相對(duì)位置不變,F(xiàn)ormAttachment類(lèi)用不同的構(gòu)造方法來(lái)實(shí)現(xiàn)組件的定位,用FormData和FormAttachment配合,可以創(chuàng)建復(fù)雜的界面,而且當(dāng)主窗體大小改變時(shí),組件的相對(duì)位置能保持相對(duì)不變。6.3.4表格式布局構(gòu)造方法:public
FormLayout()1)FormLayout的常用屬性intmarginWidth:設(shè)置組件與容器邊緣的水平距離,默認(rèn)值為0。intmarginHeight:設(shè)置組件與容器邊緣的垂直距離,默認(rèn)值為0。例如,以下代碼把父容器(shell)的四周邊距都設(shè)置成10像素:Displaydisplay=newDisplay();Shellshell=newShell(display);FormLayoutformlayout=newFormLayout();formlayout.marginHeight=10;formlayout.marginWidth=10;shell.setLayout(formlayout);6.3.4表格式布局2)FormData類(lèi)FormData的構(gòu)造方法FormData的屬性6.3.4表格式布局3)FormAttachment類(lèi)Attachment的含義是附著、粘貼。FormAttachment類(lèi)就是用來(lái)指定組件在父容器中的粘貼位置。FormAttachment計(jì)算組件粘貼位置和組件大小的方法是依據(jù)下面的表達(dá)式:y=ax+b,表達(dá)式中y是縱坐標(biāo),從上往下是正方向;x是橫坐標(biāo),從左至右是正方向;a是斜率(a=m/n,n≠0),b是偏移量,沿x、y軸正方向的偏移量為正,反之為負(fù)。代碼清單6-66.4SWT文本輸入文本輸入組件主要包括標(biāo)簽(Label類(lèi))組件和文本框組件(Text類(lèi))。標(biāo)簽(Label類(lèi))可以讓用戶(hù)輸入文字提示信息。文本框(Text)具有用戶(hù)輸入和編輯文本功能。文本框組件可以作為單行的編輯框,讓用戶(hù)可以輸入或查看一組信息(由文本框可容納的字符數(shù)所指定);或多行的編輯框,讓用戶(hù)可以輸入或查看可換行的自由文本。文本框組件也可以有多種邊框,讓用戶(hù)可以開(kāi)發(fā)出想要在用戶(hù)界面中展示的外觀與操作感受。6.4.1標(biāo)簽(Label類(lèi))繼承關(guān)系:構(gòu)造方法:Label(Compositeparent,intstyle)Label類(lèi)的常用式樣style有以下幾種:SWT.CENTER:文字居中。SWT.RIGHT:文字靠右。SWT.LEFT:文字靠左。SWT.NONE:默認(rèn)式樣。SWT.WRAP:自動(dòng)換行。SWT.BORDER:深陷型。SWT.SEPARATOR:分欄符,默認(rèn)為豎線分欄。SWT.HORIZONTAL:橫線分欄符。代碼清單6-7文本框(Text類(lèi))繼承關(guān)系:構(gòu)造方法:Text(Composite
parent,int
style)6.4.2文本框組件文本框(Text類(lèi))的式樣style:SWT.NONE:默認(rèn)式樣。SWT.CENTER:文字居中。SWT.LEFT:文字靠左。SWT.RIGHT:文字靠右。SWT.MULTI:可以輸入多行,須回車(chē)換行。SWT.WRAP:可以輸入多行,到行尾后自動(dòng)換行。SWT.PASSWORD:密碼型,輸入字符顯示成“*”。SWT.BORDER:深陷型。SWT.V_SCROLL:帶垂直滾動(dòng)條。SWT.H_SCROLL:帶水平滾動(dòng)條。代碼清單6-86.5選擇組件很多情況下,我們可能會(huì)給用戶(hù)幾種選擇,而不需要用戶(hù)在文本組件中輸入數(shù)據(jù)。SWT提供了按鈕組件(Button類(lèi))、列表框組件(List類(lèi))和下拉框組件(Combo類(lèi))讓我們實(shí)現(xiàn)這樣的功能。6.5.1按鈕組件(Button)按鈕(Button)組件是SWT中最常用的組件。按鈕有很多樣式,最常見(jiàn)的Button樣式是pushbutton、radiobutton、checboxbutton。pushbutton能讓用戶(hù)將它按下—開(kāi)始一些動(dòng)作。Yes、No與Cancel這幾個(gè)經(jīng)常在消息對(duì)話框上看到的Button是這一類(lèi)型的代表。radiobutton是被組織過(guò)的一組Button,且它們?cè)谌魏螘r(shí)候只有其中一種能夠被選中。checkbox是單一或者一組按鈕,且它們?cè)谌魏螘r(shí)候可以被選擇多個(gè)。Button類(lèi)的繼承關(guān)系:構(gòu)造方法:Button(Composite
parent,int
style)代碼清單6-9、6-10、6-116.5.2列表框組件(List類(lèi))如果有多個(gè)選擇,使用按鈕組件就不太適宜了,因?yàn)槭褂冒粹o會(huì)占據(jù)很大的屏幕空間。這時(shí)我們可以使用列表框組件(List類(lèi)),列表框組件(List類(lèi))是用來(lái)展示信息給用戶(hù)并允許選取一個(gè)或多個(gè)項(xiàng)目以供采取后續(xù)動(dòng)作(如按下按鈕來(lái)開(kāi)始處理)。 List類(lèi)的繼承關(guān)系:構(gòu)造方法:List(Composite
parent,int
style)1)列表框(List類(lèi))的式樣SWT.NONE:默認(rèn)式樣。SWT.V_SCROLL:帶垂直滾動(dòng)條。SWT.MULTI:允許復(fù)選。SWT.SINGLE:允許單選。2)List類(lèi)常用方法voidadd(Stringstring):在List中增加一項(xiàng)。voidadd(Stringstring,intindex):在List的第index項(xiàng)后插入一項(xiàng)。voiddeselectAll():使List組件中的當(dāng)前選擇項(xiàng)置空。voiddeselect(int
index)voidremove(intindex):將List的第index+1項(xiàng)移除。voidremoveAll():將List中的所有選項(xiàng)清空。voidsetItems(String[]items):將數(shù)組中的各項(xiàng)依次加入到List中。voidselect(intindex):將List的第index+1項(xiàng)設(shè)置為當(dāng)前選擇項(xiàng)。String[]getSelection():返回一個(gè)所有選項(xiàng)。booleanisSelected(int
index)
etc.代碼清單6-126.5.2列表框組件(List類(lèi))3)添加項(xiàng)目到List中:
void
setItem(int
index,String
string)可以使用setItem(…)這個(gè)方法將項(xiàng)目加入到List中。這種方法讓程序代碼簡(jiǎn)潔且清晰。例如:Stringitems[]={"C++","JAVA","C"};list.setItems(items);當(dāng)然,我們還可以使用add()方法將項(xiàng)目加入到List中:list.add("C++");list.add("JAVA");list.add("C");6.5.2列表框組件(List類(lèi))4)從List中移除具體項(xiàng)目:publicvoid
remove(int
index)public
void
remove(int[]
indices)public
void
remove(int
start,int
end)public
void
remove(String
string)6.5.3下拉框組件(Combo類(lèi))下拉框組件(Combo類(lèi))是用來(lái)讓用戶(hù)從一組項(xiàng)目選擇或是輸入不在項(xiàng)目中的文字來(lái)收集信息。它結(jié)合了List與Text這兩個(gè)組件的功能,因此叫做Combo。在List和Combo之間做選擇是很簡(jiǎn)單的:在要讓用戶(hù)能夠看到全部或部分的選項(xiàng)是很重要的時(shí)候,或在占據(jù)屏幕面積的大小不重要的時(shí)候,可以使用List。Combo類(lèi)的繼承關(guān)系:構(gòu)造方法:Combo(Composite
parent,int
style)1)下拉框(Combo類(lèi))的式樣SWT.NONE:默認(rèn)式樣。SWT.READ_ONLY:只讀。SWT.SIMPLE:無(wú)須單擊下拉框,列表會(huì)一直顯示。2)下拉框(Combo類(lèi))的常用方法voidadd(Stringstring):在Combo中增加一項(xiàng)。voidadd(Stringstring,intindex):在Combo的第index項(xiàng)后插入一項(xiàng)。voiddeselectAll():使Combo組件中的當(dāng)前選擇項(xiàng)置空。voidremove(intindex):將Combo的第index+1項(xiàng)移除。voidremoveAll():將Combo中的所有選項(xiàng)清空。voidsetItems(String[]items):將數(shù)組中的各項(xiàng)依次加入到Combo中。voidselect(intindex):將Combo的第index+1項(xiàng)設(shè)置為當(dāng)前選擇項(xiàng)。代碼清單6-136.6SWT菜單菜單(Menu類(lèi),MenuItem類(lèi))是常用的SWT組件,Menu是一個(gè)菜單欄,同時(shí)也是一個(gè)容器,可以容納菜單項(xiàng)(MenuItem)。Menu類(lèi)的繼承關(guān)系:常用的構(gòu)造方法:public
Menu(Control
parent)publicMenu(Decorations
parent,int
style)1)Menu的式樣:SWT.BAR:菜單欄,用于主菜單。SWT.DROP_DOWN:下拉菜單,用于子菜單。SWT.POP_UP:鼠標(biāo)右鍵彈出式菜單。MenuItem類(lèi)的繼承關(guān)系:構(gòu)造方法:public
MenuItem(Menu
parent,int
style)public
MenuItem(Menu
parent,int
style,int
index)2)MenuItem的式樣SWT.CASCADE:有子菜單的菜單項(xiàng)。SWT.CHECK:選中后前面顯示一個(gè)小勾。SWT.PUSH:普通型菜單。SWT.RADIO:選中后前面顯示一個(gè)圓點(diǎn)。SWT.SEPARATOR:分隔符。3)建立菜單的一般步驟:首先建立一個(gè)菜單欄,需要使用SWT.BAR屬性。MenumainMenu=newMenu(shell,SWT.BAR);窗體中指定需要顯示的菜單欄。shell.setMenuBar
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技發(fā)展與網(wǎng)絡(luò)安全教育的緊密結(jié)合
- 2025年懷化職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)必考題
- 2025年廣安職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)匯編
- 2025上海市建筑安全員-B證(項(xiàng)目經(jīng)理)考試題庫(kù)
- 2025年湖北工程職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)帶答案
- 2025年甘肅省臨夏回族自治州單招職業(yè)適應(yīng)性測(cè)試題庫(kù)及參考答案
- 2025年廣東工貿(mào)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)完整
- 局部解剖學(xué)模擬考試題(附參考答案)
- 挖煤機(jī)械售賣(mài)合同范本
- 2025年廣東茂名幼兒師范專(zhuān)科學(xué)校單招職業(yè)傾向性測(cè)試題庫(kù)新版
- 生活化教學(xué)在小學(xué)道德與法治課堂實(shí)踐 論文
- 2024年江蘇農(nóng)林職業(yè)技術(shù)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 腰脊神經(jīng)后支痛課件
- 《商務(wù)數(shù)據(jù)分析》 課件 項(xiàng)目一 商務(wù)數(shù)據(jù)分析認(rèn)知
- 加強(qiáng)鍛煉預(yù)防疾病主題
- 心衰合并胸腔積液的護(hù)理Ppt
- 2023學(xué)年、2024學(xué)年臨平區(qū)公辦學(xué)校校方責(zé)任險(xiǎn)投保采購(gòu)項(xiàng)目招標(biāo)文件
- 物流風(fēng)險(xiǎn)管理與應(yīng)對(duì)策略
- 2024家政行業(yè)現(xiàn)狀分析
- 英漢互譯單詞練習(xí)打印紙
- 冠狀動(dòng)脈粥樣硬化性心臟病患者藥物治療管理路徑專(zhuān)家共識(shí)2023版解讀
評(píng)論
0/150
提交評(píng)論