實(shí)驗(yàn)五 圖形用戶界面_第1頁
實(shí)驗(yàn)五 圖形用戶界面_第2頁
實(shí)驗(yàn)五 圖形用戶界面_第3頁
實(shí)驗(yàn)五 圖形用戶界面_第4頁
實(shí)驗(yàn)五 圖形用戶界面_第5頁
已閱讀5頁,還剩11頁未讀 繼續(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í)驗(yàn)?zāi)康?1. 了解圖形用戶界面的概念;2. 了解AWT和Swing的基本體系結(jié)構(gòu);3. 掌握幾種布局管理器的使用方法;4. 掌握J(rèn)ava的事件處理機(jī)制;5. 掌握?qǐng)D形用戶界面的構(gòu)建。實(shí)驗(yàn)要求 1. 掌握在容器中添加組件的方法,掌握使用布局管理器對(duì)組件進(jìn)行管理的方法。2. 理解 Java 的事件處理機(jī)制,掌握為不同組件編寫事件處理程序的方法。3. 掌握編寫?yīng)毩⑦\(yùn)行的窗口界面的方法。4. 了解 Java Swing 組件的使用方法。 5. 了解對(duì)話框的使用方法。6. 熟練使用圖形類 Graphics。實(shí)驗(yàn)內(nèi)容(一)建立獨(dú)立運(yùn)行的窗口界面并使用匿名類最常使用的包含組件的容器是窗

2、口,在Java 中窗口由Frame 類生成。編寫SY5_1.java程序文件,程序功能:創(chuàng)建一個(gè)具有關(guān)閉功能的空白窗口。源代碼如下:public class SY5_1SY5_1(Frame f=new Frame("初始窗口"f.setSize(350,200;f.setVisible(true;/為窗口添加窗口事件適配器f.addWindowListener(new WindowAdapter( /關(guān)閉窗口事件的方法public void windowClosing(WindowEvent eSystem.exit(0;public static void main(S

3、tring args new SY5_1(;編譯并運(yùn)行程序(二)創(chuàng)建圖形用戶界面圖形用戶界面(GUI)是為方便用戶使用設(shè)計(jì)的窗口界面,在圖形用戶界面中用戶可以看到什么就操作什么,取代了在字符方式下知道是什么后才能操作什么的方式。組件(Component)是構(gòu)成GUI 的基本要素,通過對(duì)不同事件的響應(yīng)來完成和用戶的交互或組件之間的交互。組件一般作為一個(gè)對(duì)象放置在容器(Container)內(nèi),容器是能容納和排列組件的對(duì)象,如Applet、Panel(面板)、Frame(窗口)等。通過容器的add 方法把組件加入到容器中。編寫SY5_2.java 程序文件,程序功能:在窗口中添加組件。源代碼如下:p

4、ublic class SY5_2 extends Frame implements ActionListener Button btn1, btn2;TextField f,tf1,tf2;TextArea Area;SY5_2(super("添加組件的窗口"addWindowListener(new WindowAdapter( public void windowClosing(WindowEvent e System.exit(0;setSize(350,250; /設(shè)置窗口大小setLocation(200,200;/設(shè)置窗口顯示位置setFont(new Fon

5、t("Arial",Font.PLAIN,12; /設(shè)置字體setLayout(new FlowLayout(;Area=new TextArea (6,40;tf1=new TextField(10; tf2=new TextField(10;btn1=new Button("顯示" btn2=new Button("退出"f=new TextField(20;add(Area; add(new Label("用戶名"add(tf1; add(new Label("電話"add(tf2; ad

6、d(f; add(btn1; add(btn2;tf1.addActionListener(this; tf2.addActionListener(this;btn1.addActionListener(this; btn2.addActionListener(this;show(;public static void main(String argsnew SY5_2(;public void actionPerformed(ActionEvent eif (e.getSource(=btn1f.setText("你按下了“" + e.getActionCommand(

7、+ "”按鈕"if (e.getSource(=tf1Area.append("用戶名:"+tf1.getText(+"n"if (e.getSource(=tf2Area.append("電 話:"+tf2.getText(+"n"if (e.getSource(=btn2 for (int i=0; i<100000000; i+;dispose(;/只關(guān)閉當(dāng)前窗口,注銷該對(duì)象編譯并運(yùn)行程序(三 為窗口添加菜單程序功能:在窗口中添加菜單欄,在菜單欄添加菜單項(xiàng),并添加下拉菜單和2級(jí)菜單,

8、通過選擇菜單項(xiàng)可以執(zhí)行不同操作,如“打開”可打開SY5_3類生成的窗口。源代碼如下:public class SY5_3 extends Frame implements ActionListener Panel p=new Panel(;Button b=new Button("退出"MenuBar mb=new MenuBar(; / 以下生成菜單組件對(duì)象Menu m1=new Menu("文件"MenuItem open=new MenuItem("打開"MenuItem close=new MenuItem("關(guān)閉&

9、quot;MenuItem exit=new MenuItem("退出"Menu m12=new Menu("編輯"MenuItem copy=new MenuItem("復(fù)制"MenuItem cut=new MenuItem("剪切"MenuItem paste=new MenuItem("粘貼"Menu m2=new Menu("幫助"MenuItem content=new MenuItem("目錄"MenuItem index=new MenuI

10、tem("索引"MenuItem about=new MenuItem("關(guān)于"SY5_3( super("添加菜單的窗口"setSize(350,200;add("South",p;p.add(b;b.addActionListener(this;m1.add(open; / 將菜單項(xiàng)加入到菜單m1 中m1.add(close;m1.addSeparator(; /在菜單中添加分隔條m1.add(exit;open.addActionListener(this; /給菜單項(xiàng)open 注冊(cè)事件監(jiān)聽器exit.add

11、ActionListener(this;mb.add(m1; / 將菜單m1 加入到菜單欄mb 中m12.add(copy; m12.add(cut; m12.add(paste;m1.add(m12;/將m12 作為2 級(jí)菜單添加到m1 菜單項(xiàng)中m2.add(content; m2.add(index; m2.addSeparator(; m2.add(about;mb.add(m2;setMenuBar(mb; / 設(shè)置菜單欄為mbshow(;/ 顯示組件public static void main(String args new SY5_3(;public void actionPer

12、formed(ActionEvent e if (e.getActionCommand(="退出"System.exit(0;if (e.getActionCommand(="打開"new SY5_2(;編譯并運(yùn)行程序。(四)使用 Swing 組件、了解事件處理機(jī)制 在Java 中,能夠?qū)崿F(xiàn)圖形用戶界面的類庫有兩個(gè):java.awt 和javax.swing。前者稱為抽象窗口工具庫AWT(Abstract Windows Toolkit),后者是Java 基礎(chǔ)類庫JFC(Java Foundation Classes)的一個(gè)組成部分,它提供了一套功能更強(qiáng)

13、、數(shù)量更多、更美觀的圖形用戶界面組件。Swing 組件名稱和AWT 組件名稱基本相同,但以J 開頭,例如AWT 按鈕類的名稱是Button,在Swing 中的名稱則是JButton。在圖形用戶界面中,程序和用戶的交互是通過組件響應(yīng)各種事件來實(shí)現(xiàn)的。例如,用戶單擊了一個(gè)按鈕,意味著發(fā)生了按鈕的單擊事件;選中下拉框中的一個(gè)選項(xiàng),意味著發(fā)生了一個(gè)選項(xiàng)事件。在Java 中能產(chǎn)生事件的組件叫做事件源,如按鈕。如果希望對(duì)單擊按鈕事件進(jìn)行處理,可給事件源(按鈕)注冊(cè)一個(gè)事件監(jiān)聽器(如包含按鈕的容器),如同簽訂了一個(gè)委托合同,當(dāng)事件源發(fā)生事件時(shí),事件監(jiān)聽器就代替事件源對(duì)發(fā)生的事件進(jìn)行處理,這就是所謂的委托事件

14、處理機(jī)制。單擊按鈕的事件處理程序public class SY5_4 extends JFrame implements ActionListener private JPanel jp = new JPanel(;private JButton jbArray = new JButton("自動(dòng)換行", new JButton("不換行" ;private JTextArea jta = new JTextArea(;/ 將文本區(qū)作為被滾動(dòng)控件創(chuàng)建滾動(dòng)窗體JScrollPane jsp = new JScrollPane(jta;public SY5_

15、4( jp.setLayout(null;for (int i = 0; i < 2; i+ jbArrayi.setBounds(20 + i * 110, 120, 90, 20;jp.add(jbArrayi;jbArrayi.addActionListener(this;jsp.setBounds(20, 20, 450, 80;jp.add(jsp;jta.setLineWrap(true;for (int i = 0; i < 20; i+ jta.append("" + i + "Hello World!"this.add(jp

16、;this.setTitle("文本區(qū)示例"this.setResizable(false;this.setBounds(100, 100, 500, 180;this.setVisible(true;public void actionPerformed(ActionEvent e if (e.getSource( = jbArray0 jta.setLineWrap(true; else if (e.getSource( = jbArray1 jta.setLineWrap(false;public static void main(String args new SY

17、5_4(;(五)使用布局管理器對(duì)組件進(jìn)行管理當(dāng)一個(gè)容器組件上要添加多個(gè)組件時(shí),就需要進(jìn)行組件的布局管理。Java中用布局管理器來進(jìn)行布局管理,主要作用是:用于控制組件在容器中的布局、負(fù)責(zé)確定組件在容器中的位置和大小、調(diào)用容器的setLayout(布局管理器對(duì)象 方法,為容器指定某種布局。當(dāng)容器需要定位組件和確定組件大小時(shí),就會(huì)給布局管理器對(duì)象發(fā)消息,讓它完成該項(xiàng)工作。SY5_5.java為網(wǎng)格布局示例。public class SY5_5 extends JFrame implements ActionListener private JPanel jp = new JPanel(;priva

18、te JButton jbArray = new JButton6;public SY5_5(for (int i = 0; i < jbArray.length; i+ jbArrayi = new JButton("按紐" + (i - 1;jp.add(jbArrayi;jbArrayi.addActionListener(this;this.add(jp;this.setTitle("網(wǎng)格布局"this.setBounds(100, 100, 450, 200;this.setVisible(true;public void actionP

19、erformed(ActionEvent e jp.setLayout(new GridLayout(3, 2;this.setTitle("現(xiàn)在為網(wǎng)格布局3,2"jp.revalidate(;public static void main(String args new SY5_5(;編譯并運(yùn)行程序(六)使用自定義對(duì)話框與內(nèi)部類對(duì)話框是GUI 中很常見的窗口對(duì)象,有著廣泛的應(yīng)用。對(duì)話框和普通窗口最大的不同就是對(duì)話框是依附在某個(gè)窗口上,一旦它所依附的窗口關(guān)閉了,對(duì)話框也要隨著關(guān)閉。Java 提供了Dialog 類用于制作自定義對(duì)話框,當(dāng)需要改變一些數(shù)據(jù)或需要一個(gè)提示窗口時(shí)可

20、使用自定義對(duì)話框。程序功能:創(chuàng)建一個(gè)帶有文本區(qū)及“對(duì)話框”按鈕的父窗口,單擊“對(duì)話框”按鈕可打開一個(gè)自定義對(duì)話框,從中可以定義行和列的數(shù)值,關(guān)閉對(duì)話框其設(shè)置的設(shè)置會(huì)顯示在父窗口的文本區(qū)中。編寫SY5_6.java 程序文件,源代碼如下:public class SY5_6 extends JFrame implements ActionListener int row=10, col=40;JPanel p1=new JPanel(, p2=new JPanel(;JTextArea ta=new JTextArea("文本區(qū)行數(shù):"+row+"列數(shù):"

21、+col, row, col;JScrollPane scrollPane=new JScrollPane(ta;Button exit=new Button("關(guān)閉"Button dialog=new Button("對(duì)話框"JPanel panel=new JPanel(;SY5_6(setContentPane(panel;setTitle("帶有對(duì)話框的父窗口"panel.setPreferredSize(new Dimension(500,200;panel.setLayout(new BorderLayout(;panel

22、.add("Center", p1; panel.add("South", p2;p1.add(scrollPane;p2.add(exit; p2.add(dialog;exit.addActionListener(this;dialog.addActionListener(this;pack(;show(;/setVisible(true;public static void main(String args new SY5_6(;public void actionPerformed(ActionEvent e if (e.getSource(=e

23、xitSystem.exit(0;else MyDialog dlg=new MyDialog(this, true;dlg.show(;class MyDialog extends Dialog implements ActionListener Label label1=new Label("請(qǐng)輸入行數(shù)"Label label2=new Label("請(qǐng)輸入列數(shù)"TextField rows=new TextField(50;TextField columns=new TextField(50;Button OK=new Button("確定"Button Cancel=new Button("取消"MyDialog(SY6_10 parent, boolean modal super(parent,modal;setTitle("自定義對(duì)話框"setSize(260,140;setResizable(false;setLayout(null;add(label1;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論