




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、實驗七 圖形用戶界面【開發語言及實現平臺或實驗環境】Windows2000 或XP,JDK1.4 【實驗目的】1. 了解圖形用戶界面基本組件窗口、按鈕、文本框、選擇框、滾動條等的使用方法,2. 了解如何使用布局管理器對組件進行管理,以及如何使用Java 的事件處理機制。【實驗要求】1. 掌握在Applet 容器中添加組件的方法,掌握使用布局管理器對組件進行管理的方法。2. 理解Java 的事件處理機制,掌握為不同組件編寫事件處理程序的方法。3. 掌握編寫獨立運行的窗口界面的方法。4. 了解Java Swing 組件的使用方法。5. 了解對話框的使用方法。【實驗內容】一創建圖形用戶界面圖形用戶界
2、面(Graphic User Interface ,簡稱GUI)是為方便用戶使用設計的窗口界面,在圖形用戶界面中用戶可以看到什么就操作什么,取代了在字符方式下知道是什么后才能操作什么的方式。組件(Component)是構成GUI 的基本要素,通過對不同事件的響應來完成和用戶的交互或組件之間的交互。組件一般作為一個對象放置在容器(Container)內,容器是能容納和排列組件的對象,如Applet、Panel(面板)、Frame(窗口)等。通過容器的add 方法把組件加入到容器中。1 在Applet 中添加標簽、按鈕并使用網格布局(1) 程序功能:在Applet 容器中添加組件標簽、按鈕,并使用
3、網格布局管理器排列組件在容器中的位置。(2) 編寫LX5_1.java 程序文件,源代碼如下。import java.awt.*;import java.applet.Applet;public class LX5_1 extends Applet Label l1;Button b1, b2, b3, b4, b5, b6;public void init() setLayout(new GridLayout(3,3); / 設置網格布局(3 行3 列共9 個網格)l1=new Label(標簽1);b1 = new Button(按鈕1);b2 = new Button(按鈕2);b3 =
4、 new Button(按鈕3);b4 = new Button(按鈕4);add(l1);add(b1);add(b2);add(b3);add(new Label();add(b4);add(new Button(按鈕5);add( new Button(按鈕6);add(new Label(標簽2);(3) 編譯程序LX5_1.java。(4) 編寫顯示Applet 的頁面文件LX5_1.html,在瀏覽器顯示結果如圖6.1 所示。2 在面板中添加組件(1) 程序功能:在Applet 中添加面板容器,并分別在Applet、面板容器中添加組件并使用不同的布局管理方式。(2) 編寫LX5_2
5、.java 程序文件,源代碼如下。import java.awt.*;import java.awt.Color;import java.applet.Applet;public class LX5_2 extends Applet public void init() /設置最底層的 Applet 容器為順序布局setFont(new Font(Arial,Font.PLAIN,20);Label l=new Label(這是最底層的 Applet 容器中的標簽,Label.CENTER);add(l);Panel panel1=new Panel();add( panel1);panel1
6、.setBackground(Color.blue);panel1.setForeground(Color.red);panel1.setLayout(new BorderLayout();/設置邊界布局panel1.add(North, new Button(北);panel1.add(South, new Button(南);panel1.add(East, new Button(東);panel1.add(West, new Button(西);panel1.add(Center, new Label(這是在 Panel1 面板 中部添加的標簽);Panel panel2=new Pan
7、el();add( panel2);panel2.setLayout(new GridLayout(3,1); /設置網格布局Choice c=new Choice ();/創建下拉式列表c.addItem(北京);c.addItem(上海);c.addItem(天津);Label l1=new Label(這是在 Panel2 面板中的標簽);Button b1=new Button(Panel2 中的按鈕);panel2.setBackground(Color.green);panel2.add(l1);panel2.add(b1);panel2.add(c);(3) 編譯程序LX5_2.
8、java。(4) 編寫顯示Applet 的頁面文件LX5_2.html,在瀏覽器顯示結果如圖6.2 所示。二了解事件處理機制在圖形用戶界面中,程序和用戶的交互是通過組件響應各種事件來實現的。例如,用戶單擊了一個按鈕,意味著發生了按鈕的單擊事件;選中下拉框中的一個選項,意味著發生了一個選項事件。在Java 中能產生事件的組件叫做事件源,如按鈕。如果希望對單擊按鈕事件進行處理,可給事件源(按鈕)注冊一個事件監聽器(如包含按鈕的容器),如同簽訂了一個委托合同,當事件源發生事件時,事件監聽器就代替事件源對發生的事件進行處理,這就是所謂的委托事件處理機制。1單擊按鈕的事件處理程序(1)程序功能:使用手工
9、布局設置組件標簽、按鈕的位置,為按鈕編寫單擊事件處理方法。當用戶用鼠標單擊按鈕時,會聽到一聲響聲。(2)編寫LX5_3.java 程序文件,源代碼如下。import java.awt.*;import java.awt.event.*;import java.applet.Applet;public class LX5_3 extends Applet implements ActionListener / 實現動作事件監聽接口public void init() setLayout(null);/關閉默認的順序管理布局Label l=new Label(按一下按鈕可聽到響聲!, Label.
10、CENTER);add(l);l.setBounds(40,10,150,30);Button b=new Button(按鈕);add(b);b.setBounds(60,50,60,40);b.addActionListener (this); / 注冊事件源的動作監聽者public void actionPerformed(ActionEvent e) /實現單擊事件接口的方法Toolkit.getDefaultToolkit ().beep(); /單擊事件發生時作出的反應(3)編譯程序LX5_2.java。(4)編寫顯示Applet 的頁面文件LX5_3.html,在瀏覽器顯示結果如
11、圖6.3 所示。2. 選擇復選框和單選框按鈕的事件處理程序(1) 程序功能:在Applte 上創建復選框、單選框、文本區域、單行文本框等組件,并實現根據用戶輸入的10 進制數,選擇不同選項可轉換為2、8、16 進制數。(2) 編寫LX5_4.java 程序文件,源代碼如下。import java.applet.Applet;import java.awt.*;import java.awt.event.*;public class LX5_4 extends Applet implements ItemListener TextArea area=new TextArea(6,30);/創建文
12、本區String Item=2 進制,8 進制,16 進制,10 進制;Checkbox cb=new Checkbox5;Checkbox radio=new Checkbox5;Label l=new Label(輸入10 進制數);TextField TF=new TextField(6);/創建單行文本框public void init() add(l);add(TF);add(area);add(new Label( 請選擇進制:);for(int i=0; i4; i+) cbi=new Checkbox(Itemi);add(cbi);cbi.addItemListener(th
13、is);CheckboxGroup cbGroup=new CheckboxGroup();/創建單選框add(new Label(請選擇進制:);for(int i=0; i4; i+) radioi=new Checkbox(Itemi,cbGroup,false);add(radioi);radioi.addItemListener(this);public void itemStateChanged(ItemEvent e) int x=Integer.parseInt(TF.getText();if (e.getItem ()=2 進制)area.append (你選擇的是+e.ge
14、tItem ()+ Integer.toBinaryString(x)+n);if (e.getItem ()=8 進制)area.append (你選擇的是+e.getItem ()+ Integer.toOctalString(x)+n);if (e.getItem ()=16 進制)area.append (你選擇的是+e.getItem ()+Integer.toHexString(x)+n);if (e.getItem ()=10 進制)area.append (你選擇的是+e.getItem ()+x+n);(3) 編譯程序LX5_4.java。(4) 編寫顯示Applet 的頁面
15、文件LX5_4.html,在瀏覽器顯示結果如圖6.4 所示。三建立獨立運行的窗口界面并使用匿名類最常使用的包含組件的容器是窗口,在Java 中窗口由Frame 類生成。1創建一個窗口界面(1)程序功能:創建一個具有關閉功能的空白窗口。(2)編寫LX5_5_W.java 程序文件,源代碼如下。import java.awt.*;import java.awt.event.*;public class LX5_5_W public static void main(String args) new LX5_5_W();LX5_5_W()Frame f=new Frame(初始窗口);/創建窗口對象
16、f.setSize(350,200);/設置窗口大小f.setVisible(true);/設置窗口是可視的f.addWindowListener(new WindowAdapter() /為窗口添加窗口事件適配器public void windowClosing(WindowEvent e) /關閉窗口事件的方法System.exit(0); ); (3)編譯并運行程序,會出現一個界面窗口如圖6.5 所示。它可以最大化、最小化,單擊按鈕可以關閉該窗口。2在窗口中添加組件(1)程序功能:在窗口中添加組件。(2)編寫LX5_6.java 程序文件,源代碼如下。import java.awt.*;
17、import java.awt.event.*;public class LX5_6 extends Frame implements ActionListener Button btn1, btn2;TextField f,tf1,tf2;TextArea Area;LX5_6() super(添加組件的窗口);addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0););setSize(350,250); /設置窗口大小setLocation(200,200);
18、/設置窗口顯示位置setFont(new Font(Arial,Font.PLAIN,12); /設置字體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); add(f); add(btn1); ad
19、d(btn2);tf1.addActionListener(this); tf2.addActionListener(this);btn1.addActionListener(this); btn2.addActionListener(this);show();public static void main(String args) new LX5_6();public void actionPerformed(ActionEvent e) if (e.getSource()=btn1)f.setText(你按下了“ + e.getActionCommand() + ”按鈕);if (e.ge
20、tSource()=tf1)Area.append(用戶名:+tf1.getText()+n);if (e.getSource()=tf2)Area.append(電 話:+tf2.getText()+n);if (e.getSource()=btn2) for (int i=0; i100000000; i+);dispose();/只關閉當前窗口,注銷該對象(3)編譯并運行程序,界面窗口如圖6.6 所示。3為窗口添加菜單(1)程序功能:在窗口中添加菜單欄,在菜單欄添加菜單項,并添加下拉菜單和2 級菜單,通過選擇菜單項可以執行不同操作,如“打開”可打開LX5_6 類生成的窗口。(2)編寫LX
21、5_7.java 程序文件,源代碼如下。import java.awt.*;import java.awt.event.*;public class LX5_7 extends Frame implements ActionListener Panel p=new Panel();Button b=new Button(退出);MenuBar mb=new MenuBar(); / 以下生成菜單組件對象Menu m1=new Menu(文件);MenuItem open=new MenuItem(打開);MenuItem close=new MenuItem(關閉);MenuItem exit
22、=new MenuItem(退出);Menu m12=new Menu(編輯);MenuItem copy=new MenuItem(復制);MenuItem cut=new MenuItem(剪切);MenuItem paste=new MenuItem(粘貼);Menu m2=new Menu(幫助);MenuItem content=new MenuItem(目錄);MenuItem index=new MenuItem(索引);MenuItem about=new MenuItem(關于);LX5_7() super(添加菜單的窗口);setSize(350,200);add(Sout
23、h,p);p.add(b);b.addActionListener(this);m1.add(open); / 將菜單項加入到菜單m1 中m1.add(close);m1.addSeparator(); /在菜單中添加分隔條m1.add(exit);open.addActionListener(this); /給菜單項open 注冊事件監聽器exit.addActionListener(this);mb.add(m1); / 將菜單m1 加入到菜單欄mb 中m12.add(copy); m12.add(cut); m12.add(paste);m1.add(m12);/將m12 作為2 級菜單
24、添加到m1 菜單項中m2.add(content); m2.add(index); m2.addSeparator(); m2.add(about);mb.add(m2);setMenuBar(mb); / 設置菜單欄為mbshow();/ 顯示組件public static void main(String args) new LX5_7();public void actionPerformed(ActionEvent e) if (e.getActionCommand()=退出)System.exit(0);if (e.getActionCommand()=打開)new LX5_6();
25、(3)編譯并運行程序,界面窗口如圖6.7 所示。四使用Swing 組件在Java 中,能夠實現圖形用戶界面的類庫有兩個:java.awt 和javax.swing。前者稱為抽象窗口工具庫AWT(Abstract Windows Toolkit),后者是Java 基礎類庫JFC(Java Foundation Classes)的一個組成部分,它提供了一套功能更強、數量更多、更美觀的圖形用戶界面組件。Swing 組件名稱和AWT 組件名稱基本相同,但以J 開頭,例如AWT 按鈕類的名稱是Button,在Swing 中的名稱則是JButton。1在JApplet 中添加Swing 組件(1)程序功能
26、:在JApplet 中添加3 個帶有圖片的按鈕和一個帶有圖片的標簽。(2) 準備圖片文件: 在當前目錄下建立一個image 文件夾, 存放4 個圖片文件, 例如PreviousArrow.gif。(3)編寫LX5_8.java 程序文件,源代碼如下。import javax.swing.*;import java.awt.*;import java.awt.Color;public class LX5_8 extends JApplet Container pane;JPanel panel1,panel2;JButton button1,button2,button3;JLabel labe
27、l;public void init() pane=getContentPane();panel1=new JPanel(new FlowLayout();panel2=new JPanel(new FlowLayout();ImageIcon icon = new ImageIcon(image/PreviousArrow.gif, );button1=new JButton(icon);button2=new JButton(new ImageIcon(image/go.GIF);button3=new JButton(new ImageIcon(image/NextArrow.gif);
28、label=new JLabel(圖像標簽,new ImageIcon(image/Candl02.gif),SwingConstants.CENTER);pane.setBackground(new Color(255,255,200);panel1.setBackground(new Color(255,255,104);panel2.setBackground(new Color(255,255,214);button1.setToolTipText(向上翻頁按鈕);button2.setToolTipText(跳轉按鈕);button3.setToolTipText(向下翻頁按鈕);p
29、ane.add(North,panel1);pane.add(panel2,BorderLayout.SOUTH);panel1.add(button1);panel1.add(button2);panel1.add(button3);panel2.add(label);(4)編譯LX5_8.java。(5)編寫顯示LX5_8.class 的頁面文件。(6)使用appletviewer 查看程序,結果如圖6.8 所示。2.在JFrame 窗口中添加組件(1)程序功能:創建JFrame 窗口,并在其中添加工具欄。(2)準備圖片文件: 在當前目錄下建立一個image 文件夾, 存放3 個圖片文件,
30、 例如PreviousArrow.gif。(3)編寫LX5_9.java 程序文件,源代碼如下。import javax.swing.*;import java.awt.*;import java.awt.event.*;public class LX5_9 extends JFrame implements ActionListener JButton button1,button2,button3;JToolBar toolBar;JTextArea textArea;JScrollPane scrollPane;JPanel panel;public static void main(S
31、tring args) new LX5_9();public LX5_9() super(帶有工具欄按鈕的窗口);addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0););button1=new JButton(new ImageIcon(image/PreviousArrow.gif);button2=new JButton(new ImageIcon(image/go.GIF);button3=new JButton(new ImageIcon(image/
32、NextArrow.gif);button1.addActionListener(this);button2.addActionListener(this);button3.addActionListener(this);toolBar=new JToolBar();toolBar.add(button1);toolBar.add(button2);toolBar.add(button3);textArea=new JTextArea(6,30);scrollPane=new JScrollPane(textArea);panel=new JPanel();setContentPane(pan
33、el);panel.setLayout(new BorderLayout();panel.setPreferredSize(new Dimension(300,150);panel.add(toolBar,BorderLayout.NORTH);panel.add(scrollPane,BorderLayout.CENTER);pack();show();public void actionPerformed(ActionEvent e) String s=;if (e.getSource()=button1)s=左按鈕被單擊n;else if (e.getSource()=button2)s
34、=中按鈕被單擊n;else if (e.getSource()=button3)s=右按鈕被單擊n;textArea.append(s);(4)編譯LX5_9.java。(5)運行LX5_9.class,產生的窗口界面如圖6.9 所示。五使用自定義對話框與內部類對話框是GUI 中很常見的窗口對象,有著廣泛的應用。對話框和普通窗口最大的不同就是對話框是依附在某個窗口上,一旦它所依附的窗口關閉了,對話框也要隨著關閉。Java 提供了Dialog 類用于制作自定義對話框,當需要改變一些數據或需要一個提示窗口時可使用自定義對話框。1創建自定義對話框的應用程序(1)程序功能:創建一個帶有文本區及“對話框
35、”按鈕的父窗口,單擊“對話框”按鈕可打開一個自定義對話框,從中可以定義行和列的數值,關閉對話框其設置的設置會顯示在父窗口的文本區中。(2)編寫LX5_10.java 程序文件,源代碼如下。import javax.swing.*;import java.awt.*;import java.awt.event.*;public class LX5_10 extends JFrame implements ActionListener int row=10, col=40;JPanel p1=new JPanel(), p2=new JPanel();JTextArea ta=new JTextA
36、rea(文本區行數:+row+ 列數:+col, row, col);JScrollPane scrollPane=new JScrollPane(ta);Button exit=new Button(關閉);Button dialog=new Button(對話框);JPanel panel=new JPanel();LX5_10() setContentPane(panel);setTitle(帶有對話框的父窗口);panel.setPreferredSize(new Dimension(500,200);panel.setLayout(new BorderLayout();panel.a
37、dd(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 LX5_10();public void actionPerformed(ActionEvent e) if (e.getSource()=exit)System.exit(0);else MyDialog dlg=new MyDialog(this, true);dlg.show();class MyDialog extends Dialog implements ActionListener Label label1=new Label(請輸入行數);Label label2=new Label(請輸入列數);TextField rows=new TextField(50);TextField columns=new TextField(50);Button OK=new Butto
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新解讀《CB-T 3930 - 1999船用收信多路耦合器技術條件》新解讀
- 新解讀《CB-T 569-1999船用PN160外螺紋青銅空氣截止閥》新解讀
- 隧道監控量測管理措施
- 電纜溝開挖及電纜保護管敷設措施
- 中國自由貿易試驗區發展報告2024
- 貴州省畢節市七星關區第五教育集團2022-2023學年四年級下學期數學期末聯考試卷(含答案)
- 山東省煙臺市2022-2023學年高二下學期7月期末考試化學試題(含答案)
- 汽車傳感器與檢測技術電子教案:汽車GPS導航轉角傳感器
- 服用藥物的禁忌
- 《汽車傳感器與檢測技術》課程整體教學設計
- 奇妙的植物世界
- 《媒介經營管理概論》第七章媒介品牌經營
- 院感質控整改措施
- 封底混凝土計算
- 附件9:未取得國外國籍的聲明
- 2022年DPI610-615型便攜式壓力校驗儀操作規程
- 數學分析試題及答案(兩份)
- 最新四川省教師資格認定體檢表
- 兒童手機設計報告
- 防眩板施工組織設計
- 公路交通工程及安全設施施工指導意見
評論
0/150
提交評論