實(shí)驗(yàn)三-圖形用戶界面設(shè)計(jì)(汽院含答案)_第1頁
實(shí)驗(yàn)三-圖形用戶界面設(shè)計(jì)(汽院含答案)_第2頁
實(shí)驗(yàn)三-圖形用戶界面設(shè)計(jì)(汽院含答案)_第3頁
實(shí)驗(yàn)三-圖形用戶界面設(shè)計(jì)(汽院含答案)_第4頁
實(shí)驗(yàn)三-圖形用戶界面設(shè)計(jì)(汽院含答案)_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

實(shí)驗(yàn)三圖形用戶界面設(shè)計(jì)實(shí)驗(yàn)?zāi)康恼莆認(rèn)ava語言中GUI編程的基本方法掌握J(rèn)ava語言中AWT組件的基本用法掌握J(rèn)ava語言中Swing組件的基本用法實(shí)驗(yàn)導(dǎo)讀通過圖形用戶界面(GUI:GraphicsUserInterface),用戶和程序之間可以方便地進(jìn)行交互。AWT(AbstractWindowingToolkit),中文譯為抽象窗口工具包,是Java提供的用來建立和設(shè)置Java的圖形用戶界面的基本工具。AWT由Java中的java.awt包提供,里面包含了許多可用來建立與平臺(tái)無關(guān)的圖形用戶界面(GUI)的類,這些類又被稱為組件(components)。Swing是一個(gè)用于開發(fā)Java應(yīng)用程序用戶界面的開發(fā)工具包。它以抽象窗口工具包(AWT)為基礎(chǔ)使跨平臺(tái)應(yīng)用程序可以使用任何可插拔的外觀風(fēng)格。Swing開發(fā)人員只用很少的代碼就可以利用Swing豐富、靈活的功能和模塊化組件來創(chuàng)建優(yōu)雅的用戶界面。JDK寫程序所有功能都是靠虛擬機(jī)去操作本地操作系統(tǒng)。比如window下,就是JDK用windowsAPI實(shí)現(xiàn)功能。而awt包中很多組件是組件自身去調(diào)用本地操作系統(tǒng)代碼swing包中的組件采用的是調(diào)用本地虛擬機(jī)方法,由虛擬機(jī)再調(diào)用本地操作系統(tǒng)代碼。意思就是中間多了一層,這樣就加強(qiáng)了swing包的移植性,與本地關(guān)系不那強(qiáng)了。圖3.1AWT常用組件繼承關(guān)系圖Container為容器,是一個(gè)特殊的組件,該組件中可以通過add方法添加其他組件進(jìn)來。布局,容器中的組件的排放方式。常見的布局管理器:FlowLayout(流式布局管理器):從左到右的順序排列。Panel默認(rèn)的布局管理器。BorderLayout(邊界布局管理器):東,南,西,北,中。Frame默認(rèn)的布局管理器。GridLayout(網(wǎng)格布局管理器):規(guī)則的矩陣CardLayout(卡片布局管理器):選項(xiàng)卡GridBagLayout(網(wǎng)格包布局管理器):非規(guī)則的矩陣類JFrame是java.awt.Frame的擴(kuò)展版本,該版本添加了對JFC/Swing組件架構(gòu)的支持,常用方法如下:JFrame()該構(gòu)造方法可以創(chuàng)建一個(gè)無標(biāo)題的窗口,窗口的默認(rèn)布局為BorderLayout布局。JFrame(Strings)該構(gòu)造方法可以創(chuàng)建一個(gè)標(biāo)題為s的窗口,窗口的默認(rèn)布局為BorderLayout布局。publicvoidsetBounds(inta,intb,intwidth,intheight)窗口調(diào)用該方法可以設(shè)置出現(xiàn)在屏幕上時(shí)的初始位置是(a,b),即距屏幕左面a個(gè)像素、距屏幕上方b個(gè)像素;窗口的寬是width,高是height。publicvoidsetSize(intwidth,intheight)設(shè)置窗口的大小,窗口在屏幕出現(xiàn)是默認(rèn)位置是(0,0)。publicvoidsetVisible(booleanb)設(shè)置窗口是可見還是不可見,窗口默認(rèn)是不可見的。publicvoidsetResizable(booleanb)設(shè)置窗口是否可調(diào)整大小,窗口默認(rèn)是可調(diào)整大小的。publicvoidsetDefaultCloseOperation(intoperation)設(shè)置用戶在此窗體上發(fā)起"close"時(shí)默認(rèn)執(zhí)行的操作。publicvoidsetLocationRelativeTo(Componentc)設(shè)置窗口相對于指定組件的位置。如果組件當(dāng)前未顯示,或者c為null,則此窗口將置于屏幕的中央。實(shí)驗(yàn)內(nèi)容圖形用戶界面設(shè)計(jì)程序(ArtFont.java)要求:設(shè)計(jì)一個(gè)文字字體設(shè)置窗體,在該窗體中可以設(shè)置要顯示文字的字體內(nèi)容,包括字體名稱、字體大小、粗體和斜體等字體風(fēng)格。并模擬在不同操作系統(tǒng)下的顯示效果。程序的最終顯示效果如下:提示:整個(gè)窗體繼承于JFrame,采用BorderLayout布局。在窗體中添加三個(gè)JPanel:northPanel、centerPanel和southPanel,分別位于窗體的北部、中部和南部,然后分別在各個(gè)面板中添加其它組件,并逐步完善程序功能。日歷應(yīng)用程序設(shè)計(jì)編寫一個(gè)應(yīng)用程序,設(shè)計(jì)一個(gè)窗體,該窗體為BorderLayout布局。窗體的中心添加一個(gè)Panel容器:Panel容器的布局是7行7列的GridLayout布局,Panel容器中放置49個(gè)標(biāo)簽,用來顯示日歷。窗口的北面添加一個(gè)Panel容器,其布局是FlowLayout布局,Panel容器中放置兩個(gè)按鈕:nextMonth和previousMonth。窗口的南面添加一個(gè)Panel容器,其布局是FlowLayout,Panel容器中放置一個(gè)標(biāo)簽用來顯示一些信息。請按以下步驟完成程序設(shè)計(jì):編寫CalendarBean類,實(shí)現(xiàn)日期類:publicclassCalendarBean{ Stringday[]; intyear=2013,month=0; publicvoidsetYear(intyear){ this.year=year; } publicintgetYear(){ returnyear; } publicvoidsetMonth(intmonth){ this.month=month; } publicintgetMonth(){ returnmonth; } //返回某年某月1號(hào)開始的日期數(shù)組 publicString[]getCalendar(){ Stringa[]=newString[42]; Calendar日歷=Calendar.getInstance(); //注意:1月份是從0開始,所以要減1 日歷.set(year,month-1,1); int星期幾=日歷.get(Calendar.DAY_OF_WEEK)-1; intday=0; if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){ day=31; } if(month==4||month==6||month==9||month==11){ day=30; } if(month==2){ if(((year%4==0)&&(year%100!=0))||(year%400==0)){ day=29; }else{ day=28; } } for(inti=星期幾,n=1;i<星期幾+day;i++){ a[i]=String.valueOf(n); n++; } returna; }}補(bǔ)充代碼,完成日歷窗體界面類設(shè)計(jì):publicclassCalendarFrameextendsFrame{ LabellabelDay[]=newLabel[42]; LabellabelYear; ButtontitleName[]=newButton[7]; ButtonnextMonth,previousMonth; LabelshowMessage; TextFieldinputYear; CalendarBeancalendar; Stringname[]={"日","一","二","三","四","五","六"}; intyear=2013,month=1; Stringdays[]; publicCalendarFrame(){ calendar=newCalendarBean(); calendar.setYear(year); calendar.setMonth(month); days=calendar.getCalendar(); ScrollPanescrollPane=newScrollPane(); scrollPane.add(getCenterPanel()); 【補(bǔ)充代碼】//窗口添加scrollPane在中心區(qū)域 【補(bǔ)充代碼】//窗口添加pNorth在北面區(qū)域 【補(bǔ)充代碼】//窗口添加pSouth在南區(qū)域。 } privatePanelgetNorthPanel(){ Panelpanel=newPanel(); 【補(bǔ)充代碼…】 returnpanel; } privatePanelgetCenterPanel(){ Panelpanel=newPanel(); 【補(bǔ)充代碼】//將panel的布局設(shè)置為7行7列的GridLayout布局 for(inti=0;i<7;i++){ titleName[i]=newButton(name[i]); 【補(bǔ)充代碼】//panel添加組件titleName[i]。 } for(inti=0;i<42;i++){ labelDay[i]=newLabel("",Label.CENTER); 【補(bǔ)充代碼】//panel添加組件labelDay[i]。 } for(inti=0;i<42;i++){ labelDay[i].setText(days[i]); } returnpanel; } privatePanelgetSouthPanel(){ Panelpanel=newPanel(); 【補(bǔ)充代碼…】 returnpanel; }}設(shè)計(jì)主應(yīng)用程序類: publicclassCalendarMainClass{ publicstaticvoidmain(Stringargs[]){ CalendarFrameframe=newCalendarFrame(); frame.setTitle("日歷應(yīng)用程序"); frame.setBounds(100,100,360,300); frame.setVisible(true); frame.validate(); }}調(diào)試、編譯和運(yùn)行程序,并顯示正確界面。CalendarBean.javaimportjava.util.Calendar;publicclassCalendarBean{ Stringday[]; intyear=2013,month=0; publicvoidsetYear(intyear){ this.year=year; } publicintgetYear(){ returnyear; } publicvoidsetMonth(intmonth){ this.month=month; } publicintgetMonth(){ returnmonth; } //返回某年某月1號(hào)開始的日期數(shù)組 publicString[]getCalendar(){ Stringa[]=newString[42]; Calendar日歷=Calendar.getInstance(); //注意:1月份是從0開始,所以要減1 日歷.set(year,month-1,1); int星期幾=日歷.get(Calendar.DAY_OF_WEEK)-1; intday=0; if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){ day=31; } if(month==4||month==6||month==9||month==11){ day=30; } if(month==2){ if(((year%4==0)&&(year%100!=0))||(year%400==0)){ day=29; }else{ day=28; } } for(inti=星期幾,n=1;i<星期幾+day;i++){ a[i]=String.valueOf(n); n++; } returna; }}CalendarFrame.javaimportjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassCalendarFrameextendsJFrameimplementsActionListener,KeyListener{ /** * */ privatestaticfinallongserialVersionUID=1L; LabellabelDay[]=newLabel[42]; LabellabelYear; ButtontitleName[]=newButton[7]; ButtonnextMonth,previousMonth; LabelshowMessage; TextFieldinputYear; CalendarBeancalendar; Stringname[]={"日","一","二","三","四","五","六"}; intyear=2013,month=1; Stringdays[]; publicCalendarFrame(){ calendar=newCalendarBean(); calendar.setYear(year); calendar.setMonth(month); days=calendar.getCalendar(); ScrollPanescrollPane=newScrollPane(); scrollPane.add(getCenterPanel()); add("Center",scrollPane);//【補(bǔ)充代碼】//窗口添加scrollPane在中心區(qū)域 add(getNorthPanel(),BorderLayout.NORTH);//【補(bǔ)充代碼】//窗口添加pNorth在北面區(qū)域 add(getSouthPanel(),BorderLayout.SOUTH);//【補(bǔ)充代碼】//窗口添加pSouth在南區(qū)域。 } privatePanelgetNorthPanel(){ Panelpanel=newPanel(); //【補(bǔ)充代碼…】 panel.setLayout(newFlowLayout(FlowLayout.CENTER,10,5)); showMessage=newLabel("請輸入年份:"); inputYear=newTextField(8); previousMonth=newButton("上月"); nextMonth=newButton("下月"); panel.add(showMessage); panel.add(inputYear); panel.add(previousMonth); panel.add(nextMonth); returnpanel; } privatePanelgetCenterPanel(){ Panelpanel=newPanel(); panel.setLayout(newGridLayout(7,7));//【補(bǔ)充代碼】//將panel的布局設(shè)置為7行7列的GridLayout布局 for(inti=0;i<7;i++){ titleName[i]=newButton(name[i]); panel.add(titleName[i]);//【補(bǔ)充代碼】//panel添加組件titleName[i]。 } for(inti=0;i<42;i++){ labelDay[i]=newLabel("",Label.CENTER); panel.add(labelDay[i]);//【補(bǔ)充代碼】//panel添加組件labelDay[i]。 } for(inti=0;i<42;i++){ labelDay[i].setText(days[i]); } returnpanel; } privatePanelgetSouthPanel(){CalendarMainClass.javaimportjava.awt.*;importjavax.swing.*;publicclassCalendarFrameextendsJFrame{ /** * */ privatestaticfinallongserialVersionUID=1L; LabellabelDay[]=newLabel[42]; LabellabelYear; ButtontitleName[]=newButton[7]; ButtonnextMonth,previousMonth; LabelshowMessage; TextFieldinputYear; CalendarBeancalendar; Stringname[]={"日","一","二","三","四","五","六"}; intyear=2013,month=1; Stringdays[]; publicCalendarFrame(){ calendar=newCalendarBean(); calendar.setYear(year); calendar.setMonth(month); days=calendar.getCalendar(); ScrollPanescrollPane=newScrollPane(); scrollPane.add(getCenterPanel()); add("Center",scrollPane);//【補(bǔ)充代碼】//窗口添加scrollPane在中心區(qū)域 add(getNorthPanel(),BorderLayout.NORTH);//【補(bǔ)充代碼】//窗口添加pNorth在北面區(qū)域 add(getSouthPanel(),BorderLayout.SOUTH);//【補(bǔ)充代碼】//窗口添加pSouth在南區(qū)域。 } privatePanelgetNorthPanel(){ Panelpanel=newPanel(); //【補(bǔ)充代碼…】 panel.setLayout(newFlowLayout(FlowLayout.CENTER,10,5)); showMessage=newLabel("請輸入年份:"); inputYear=newTextField(8); previousMonth=newButton("上月"); nextMo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論