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

下載本文檔

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

文檔簡(jiǎn)介

1、.實(shí)驗(yàn)三圖形用戶界面設(shè)計(jì)實(shí)驗(yàn)?zāi)康? 掌握 Java語(yǔ)言中 GUI 編程的基本方法2 掌握 Java語(yǔ)言中 AWT 組件的基本用法3 掌握 Java語(yǔ)言中 Swing 組件的基本用法實(shí)驗(yàn)導(dǎo)讀1. 通過圖形用戶界面 (GUI: Graphics User Interface) ,用戶和程序之間可以方便地進(jìn)行交互。AWT(Abstract Windowing Toolkit) ,中文譯為抽象窗口工具包,是 Java 提供的用來(lái)建立和設(shè)置 Java的圖形用戶界面的基本工具。AWT 由 Java中的 java.awt 包提供,里面包含了許多可用來(lái)建立與平臺(tái)無(wú)關(guān)的圖形用戶界面(GUI)的類,這些類又被稱為

2、組件(components) 。Swing 是一個(gè)用于開發(fā)Java 應(yīng)用程序用戶界面的開發(fā)工具包。它以抽象窗口工具包(AWT)為基礎(chǔ)使跨平臺(tái)應(yīng)用程序可以使用任何可插拔的外觀風(fēng)格。Swing 開發(fā)人員只用很少的代碼就可以利用Swing 豐富、靈活的功能和模塊化組件來(lái)創(chuàng)建優(yōu)雅的用戶界面。JDK寫程序所有功能都是靠虛擬機(jī)去操作本地操作系統(tǒng)。比如 window 下,就是 JDK用windows API 實(shí)現(xiàn)功能。而awt 包中很多組件是組件自身去調(diào)用本地操作系統(tǒng)代碼swing 包中的組件采用的是調(diào)用本地虛擬機(jī)方法,由虛擬機(jī)再調(diào)用本地操作系統(tǒng)代碼。意思就是中間多了一層,這樣就加強(qiáng)了swing 包的移植性

3、,與本地關(guān)系不那強(qiáng)了。圖 3.1 AWT 常用組件繼承關(guān)系圖Container 為容器,是一個(gè)特殊的組件,該組件中可以通過add 方法添加其他組件進(jìn)來(lái)。2.布局,容器中的組件的排放方式。常見的布局管理器:FlowLayout(流式布局管理器) :從左到右的順序排列。Panel 默認(rèn)的布局管理器。BorderLayout (邊界布局管理器) :東,南,西,北,中。Frame 默認(rèn)的布局管理器。GridLayout (網(wǎng)格布局管理器) :規(guī)則的矩陣.CardLayout(卡片布局管理器) :選項(xiàng)卡GridBagLayout(網(wǎng)格包布局管理器) :非規(guī)則的矩陣3.類 JFrame 是 java.aw

4、t.Frame的擴(kuò)展版本,該版本添加了對(duì)JFC/Swing 組件架構(gòu)的支持,常用方法如下:1) JFrame() 該構(gòu)造方法可以創(chuàng)建一個(gè)無(wú)標(biāo)題的窗口,窗口的默認(rèn)布局為BorderLayout 布局。2)JFrame(String s)該構(gòu)造方法可以創(chuàng)建一個(gè)標(biāo)題為s 的窗口,窗口的默認(rèn)布局為 BorderLayout 布局。3)public void setBounds(int a,int b,int width,int height)窗口調(diào)用該方法可以設(shè)置出現(xiàn)在屏幕上時(shí)的初始位置是(a,b),即距屏幕左面a 個(gè)像素、 距屏幕上方 b 個(gè)像素;窗口的寬是 width ,高是 height 。4)

5、public void setSize(int width,int height)設(shè)置窗口的大小, 窗口在屏幕出現(xiàn)是默認(rèn)位置是 (0,0)。5) public void setVisible(boolean b) 設(shè)置窗口是可見還是不可見,窗口默認(rèn)是不可見的。6)public void setResizable(boolean b)設(shè)置窗口是否可調(diào)整大小,窗口默認(rèn)是可調(diào)整大小的。7) public void setDefaultCloseOperation(int operation) 設(shè)置用戶在此窗體上發(fā)起close 時(shí)默認(rèn)執(zhí)行的操作。8) public void setLocationRe

6、lativeTo(Component c) 設(shè)置窗口相對(duì)于指定組件的位置。 如果組件當(dāng)前未顯示,或者c 為 null ,則此窗口將置于屏幕的中央。實(shí)驗(yàn)內(nèi)容1. 圖形用戶界面設(shè)計(jì)程序 (ArtFont.java)要求:設(shè)計(jì)一個(gè)文字字體設(shè)置窗體,在該窗體中可以設(shè)置要顯示文字的字體內(nèi)容,包括字體名稱、 字體大小、 粗體和斜體等字體風(fēng)格。并模擬在不同操作系統(tǒng)下的顯示效果。程序的最終顯示效果如下:提示:整個(gè)窗體繼承于JFrame,采用 BorderLayout 布局。在窗體中添加三個(gè)JPanel:northPanel、 centerPanel和 southPanel ,分別位于窗體的北部、中部和南部,然

7、后分別在各個(gè)面板中添加其它組件,并逐步完善程序功能。.請(qǐng)按以下步驟完成程序設(shè)計(jì):1) 新建 ArtFont 類,該類用于顯示主界面。其主要代碼如下:publicclassArtFontextendsJFrame JComboBoxfontType; /字體樣式下拉框 ,JComboBoxfontSize; /字體大小下拉框JComboBoxwindowStyle; /窗體樣式下拉框JCheckBoxboldBx; /粗體按鈕JCheckBoxitalicBx; /斜體按鈕JButtoncolorBtn; /顏色按鈕;StringfontNames; /字體名稱 ;StringfontSizes

8、; /字體大?。籎Labellabel; /輸入提示標(biāo)簽;JTextFieldinputText; /文字輸入框;JTextAreatxtArea; /文字顯示區(qū) ;JPanelnorthPanel; /字體設(shè)置;JPanelcenterPanel; /顯示效果區(qū)JPanelsouthPanel; /樣式設(shè)置Fontfont;intboldStyle, italicStyle,underlineStyle;intfontSizeStyle;StringfontNameStyle;ColorcolorStyle= Color.black; /設(shè)置字體的默認(rèn)顏色為黑色 ;Stringstyle=

9、默認(rèn)顯示效果 ,Windows顯示效果 , Unix顯示效果 ;publicArtFont() super( 字體設(shè)置 );./ 置默 字體boldStyle= 0;italicStyle= 0;underlineStyle= 0;fontSizeStyle= 10;fontNameStyle= 宋體 ;font=new Font(fontNameStyle, boldStyle+italicStyle,fontSizeStyle);northPanel= getNorthPanel();centerPanel= getCenterPanel();southPanel= getSouthPan

10、el();/ 置容器 ;Container container = getContentPane();container.setLayout(new BorderLayout();【 充代 】 / 將northPanel添加到窗體的北部【 充代 】 / 將centerPanel添加到窗體的北部【 充代 】 / 將southPanel添加到窗體的北部setSize(500, 300);【 充代 】 / 將窗體位于屏幕的中央setVisible(true);privateJPanel getNorthPanel() JPanel panel =new JPanel();returnpanel;pr

11、ivateJPanel getCenterPanel() JPanel panel =new JPanel();returnpanel;privateJPanel getSouthPanel() JPanel panel =new JPanel();returnpanel;publicstaticvoidmain(String args) ArtFont artFont =new ArtFont();artFont.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);2)根據(jù) ArtFont 類代碼和程序界面圖設(shè)計(jì)北部面板northPanel:priv

12、ateJPanel getNorthPanel() JPanel panel =new JPanel();【 充代 】.returnpanel;3)根據(jù) ArtFont 類代碼和程序界面圖設(shè)計(jì)中部面板centerPanel:privateJPanel getCenterPanel() JPanel panel =new JPanel();【 充代 】returnpanel;4)根據(jù) ArtFont 類代碼和程序界面圖設(shè)計(jì)南部面板southPanel:privateJPanel getSouthPanel() JPanel panel =new JPanel();/ 得系 默 字體Graphic

13、sEnvironment ge =GraphicsEnvironment.getLocalGraphicsEnvironment();fontNames= ge.getAvailableFontFamilyNames();fontType=new JComboBox(fontNames);/ 置字體大小fontSizes=new String63;for(inti = 0; i fontSizes. length; i+) fontSizesi = Integer.toString(i+10);【 充代 】returnpanel;5) 調(diào)試、編譯和運(yùn)行程序,并顯示正確界面。答案:importj

14、avax.swing.*;importjava.awt.*;publicclassArtFontextendsJFrame JComboBox fontType; / 字體 式下拉框,JComboBox fontSize; / 字體大小下拉框JComboBox windowStyle; / 窗體 式下拉框JCheckBoxboldBx ; /粗體按 JCheckBox italicBx; /斜體按 JButtoncolorBtn; / 色按 ;StringfontNames ; /字體名稱 ;StringfontSizes; /字體大?。籎Labellabel ; / 入提示 ;.JTextF

15、ieldinputText; /文字輸入框;JTextAreatxtArea; /文字顯示區(qū) ;JPanel northPanel ; / 字體設(shè)置;JPanelcenterPanel; / 顯示效果區(qū)JPanelsouthPanel; /樣式設(shè)置Fontfont ;intboldStyle, italicStyle,underlineStyle;intfontSizeStyle;StringfontNameStyle;Color colorStyle= Color.black ; / 設(shè)置字體的默認(rèn)顏色為黑色;Stringstyle= 默認(rèn)顯示效果 ,Windows顯示效果 , Unix顯示

16、效果 ;publicArtFont() super ( 字體設(shè)置 );/設(shè)置默認(rèn)字體boldStyle= 0;italicStyle= 0;underlineStyle= 0;fontSizeStyle= 10;fontNameStyle= 宋體 ;font=new Font(fontNameStyle, boldStyle + italicStyle,fontSizeStyle);northPanel= getNorthPanel();centerPanel= getCenterPanel();southPanel= getSouthPanel();/設(shè)置容器 ;Container cont

17、ainer = getContentPane();container.setLayout(new BorderLayout();container.add(northPanel,BorderLayout.NORTH); / / 【補(bǔ)充代碼】 / 將northPanel添加到窗體的北部container.add(centerPanel,BorderLayout.CENTER);/【補(bǔ)充代碼】/ 將centerPanel添加到窗體的北部container.add(southPanel,BorderLayout.SOUTH);/ 【補(bǔ)充代碼】 /將 southPanel 添加到窗體的北部setSiz

18、e(500, 300);/ 【補(bǔ)充代碼】 / 將窗體位于屏幕的中央setLocationRelativeTo(null);setVisible(true);privateJPanel getNorthPanel() JPanel panel =new JPanel();label=new JLabel( 輸入 ,JLabel.LEFT);/ 設(shè)置輸入提示標(biāo)簽.panel.add(label);/ 設(shè)置文本輸入框;inputText=new JTextField(10);panel.add(inputText);/ inputText.addActionListener(this);boldBx

19、 =new JCheckBox( 粗體 );panel.add(boldBx );italicBx=new JCheckBox( 斜體 );panel.add(italicBx);colorBtn=new JButton( 顏色 );panel.add(colorBtn);returnpanel;privateJPanel getCenterPanel() JPanel panel =new JPanel();panel.setLayout(new BorderLayout();txtArea=new JTextArea();panel.add(txtArea,BorderLayout.CEN

20、TER);returnpanel;privateJPanel getSouthPanel() JPanel panel =new JPanel();GraphicsEnvironmentge=GraphicsEnvironment.getLocalGraphicsEnvironment();fontNames =ge.getAvailableFontFamilyNames();/獲得系統(tǒng)中所有字體的名字;fontType=new JComboBox( fontNames );fontType.setEditable(false);fontType.setMaximumRowCount(10);

21、panel.add(fontType);fontSizes=new String63;for ( inti=0;i63;i+)fontSizes i=Integer.toString (i+10); fontSize=new JComboBox( fontSizes);fontSize.setEditable(false);fontSize.setMaximumRowCount(10);panel.add(fontSize);windowStyle=new JComboBox( style);panel.add(windowStyle);returnpanel;publicstaticvoid

22、main(String args) .ArtFont artFont =new ArtFont();artFont.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);2. 日歷應(yīng)用程序設(shè)計(jì)編寫一個(gè)應(yīng)用程序,設(shè)計(jì)一個(gè)窗體,該窗體為BorderLayout 布局。窗體的中心添加一個(gè) Panel 容器: Panel 容器的布局是7 行 7 列的 GridLayout 布局, Panel 容器中放置49個(gè)標(biāo)簽,用來(lái)顯示日歷。窗口的北面添加一個(gè)Panel 容器,其布局是FlowLayout 布局,Panel 容器中放置兩個(gè)按鈕:nextMonth 和 prev

23、iousMonth 。窗口的南面添加一個(gè)Panel 容器,其布局是FlowLayout ,Panel 容器中放置一個(gè)標(biāo)簽用來(lái)顯示一些信息。請(qǐng)按以下步驟完成程序設(shè)計(jì):1) 編寫 CalendarBean 類,實(shí)現(xiàn)日期類:publicclassCalendarBean Stringday ;intyear= 2013,month = 0;publicvoidsetYear(intyear) this. year = year;publicintgetYear() returnyear;publicvoidsetMonth(intmonth) this. month= month;.publicin

24、tgetMonth() returnmonth ;/ 返回某年某月 1 號(hào)開始的日期數(shù)組publicString getCalendar() String a =new String42;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 |

25、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+) ai = String.valueOf(n);n+;returna;2) 補(bǔ)充代碼,完成日歷窗體界面類設(shè)計(jì):publicclassCalendarFrameextendsFrame Lab

26、ellabelDay =new Label42;LabellabelYear;ButtontitleName =new Button7;ButtonnextMonth,previousMonth;LabelshowMessage;TextFieldinputYear;CalendarBeancalendar;Stringname = 日 , 一 , 二 , 三 , 四 , 五 ,.六 ;intyear= 2013,month= 1;Stringdays ;publicCalendarFrame() calendar=new CalendarBean();calendar.setYear(yea

27、r );calendar.setMonth(month );days =calendar.getCalendar();ScrollPane scrollPane =new ScrollPane();scrollPane.add(getCenterPanel();【 充代 】 /窗口添加 scrollPane在中心區(qū)域【 充代 】 /窗口添加 pNorth在北面區(qū)域【 充代 】 /窗口添加 pSouth在南區(qū)域。privatePanel getNorthPanel() Panel panel =new Panel();【 充代 】returnpanel;privatePanel getCente

28、rPanel() Panel panel =new Panel();【 充代 】 / 將panel 的布局 置 7行 7列的 GridLayout 布局 for ( int i = 0; i 7; i+) titleNamei =new Button(namei);【 充代 】 / panel添加 件 titleNamei。for( inti = 0; i 42; i+) labelDayi =new Label( , Label.CENTER);【 充代 】 / panel添加 件 labelDayi。for( inti = 0; i 42; i+) labelDayi.setText(da

29、ys i);returnpanel;privatePanel getSouthPanel() Panel panel =new Panel();【 充代 】returnpanel;.3) 設(shè)計(jì)主應(yīng)用程序類:publicclassCalendarMainClass publicstaticvoidmain(String args) CalendarFrame frame =new CalendarFrame();frame.setTitle( 日歷應(yīng)用程序 );frame.setBounds(100, 100, 360, 300);frame.setVisible(true);frame.val

30、idate();4) 調(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)開

31、始的日期數(shù)組publicString getCalendar() String a =new String42;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

32、 |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+) ai = String.valueOf(n);n+;returna;CalendarFrame.javaimportjava.awt.*;importjava.awt.event.*;importjavax.swing.*;public clas

33、s CalendarFrame extends JFrame implements ActionListener,KeyListener/*/privatestaticfinallong serialVersionUID= 1L;LabellabelDay =new Label42;LabellabelYear;ButtontitleName =new Button7;ButtonnextMonth,previousMonth;LabelshowMessage ;TextFieldinputYear;CalendarBeancalendar;Stringname = 日 , 一 , 二 , 三

34、 , 四 , 五 , 六 ;int year= 2013,month= 1;Stringdays ;.publicCalendarFrame() calendar=new CalendarBean();calendar.setYear(year );calendar.setMonth(month );days =calendar.getCalendar();ScrollPane scrollPane =new ScrollPane();scrollPane.add(getCenterPanel();add( Center,scrollPane);/ 【 充代 】 /窗口添加 scrollPan

35、e在中心區(qū)域add(getNorthPanel(),BorderLayout.NORTH); / 【 充代 】 /窗口添加 pNorth 在北面區(qū)域add(getSouthPanel(),BorderLayout.SOUTH); / 【 充代 】 /窗口添加 pSouth 在南區(qū)域。privatePanel getNorthPanel() Panel panel =new Panel();/ 【 充代 】panel.setLayout(new FlowLayout(FlowLayout.CENTER,10,5);showMessage =new Label( 入年份: );inputYear=

36、new TextField(8);previousMonth=new Button( 上月 );nextMonth=new Button( 下月 );panel.add(showMessage );panel.add(inputYear);panel.add(previousMonth);panel.add(nextMonth);returnpanel;privatePanel getCenterPanel() Panel panel =new Panel();panel.setLayout(new GridLayout(7,7);/ 【 充代 】 /將 panel 的布局 置 7行7列的 G

37、ridLayout布局for( inti = 0; i 7; i+) titleNamei =new Button(namei);panel.add(titleNamei);/ 【 充代 】 / panel添加 件titleNamei。for( inti = 0; i 42; i+) .labelDayi =new Label( , Label.CENTER);panel.add(labelDayi);/ 【補(bǔ)充代碼】 / panel添加組件labelDayi。for( inti = 0; i 42; i+) labelDayi.setText(days i);returnpanel;priv

38、atePanel getSouthPanel() CalendarMainClass.javaimportjava.awt.*;importjavax.swing.*;publicclassCalendarFrameextendsJFrame /*/privatestaticfinallongserialVersionUID= 1L;LabellabelDay =new Label42;LabellabelYear;ButtontitleName =new Button7;ButtonnextMonth,previousMonth;LabelshowMessage ;TextFieldinputYear;CalendarBeancalendar;Stringname = 日 , 一 , 二 , 三 , 四 , 五 , 六 ;intyear= 2013,month = 1;Stringdays ;publicCalendarFrame() calendar=new CalendarBean();calendar.setYear(year );calendar.setMonth(month );days =calendar.get

溫馨提示

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

評(píng)論

0/150

提交評(píng)論