




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)六 圖形用戶界面【開(kāi)發(fā)語(yǔ)言及實(shí)現(xiàn)平臺(tái)或?qū)嶒?yàn)環(huán)境】Windows2000 或XP,JDK1.6 【實(shí)驗(yàn)?zāi)康摹?. 了解圖形用戶界面基本組件窗口、按鈕、文本框、選擇框、滾動(dòng)條等的使用方法,2. 了解如何使用布局管理器對(duì)組件進(jìn)行管理,以及如何使用Java 的事件處理機(jī)制。【實(shí)驗(yàn)要求】1. 掌握在Applet 容器中添加組件的方法,掌握使用布局管理器對(duì)組件進(jìn)行管理的方法。2. 理解Java 的事件處理機(jī)制,掌握為不同組件編寫(xiě)事件處理程序的方法。3. 掌握編寫(xiě)?yīng)毩⑦\(yùn)行的窗口界面的方法。4. 了解Java Swing 組件的使用方法。5. 了解對(duì)話框的使用方法。【實(shí)驗(yàn)內(nèi)容】一創(chuàng)建圖形用戶界面圖形用戶界
2、面(Graphic User Interface ,簡(jiǎn)稱(chēng)GUI)是為方便用戶使用設(shè)計(jì)的窗口界面,在圖形用戶界面中用戶可以看到什么就操作什么,取代了在字符方式下知道是什么后才能操作什么的方式。組件(Component)是構(gòu)成GUI 的基本要素,通過(guò)對(duì)不同事件的響應(yīng)來(lái)完成和用戶的交互或組件之間的交互。組件一般作為一個(gè)對(duì)象放置在容器(Container)內(nèi),容器是能容納和排列組件的對(duì)象,如Applet、Panel(面板)、Frame(窗口)等。通過(guò)容器的add 方法把組件加入到容器中。1 在Applet 中添加標(biāo)簽、按鈕并使用網(wǎng)格布局(1) 程序功能:在Applet 容器中添加組件標(biāo)簽、按鈕,并使用
3、網(wǎng)格布局管理器排列組件在容器中的位置。(2) 編寫(xiě)LX5_1.java 程序文件,源代碼如下。public class LX5_1 extends Applet Label l1;Button b1, b2, b3, b4, b5, b6;public void init() setLayout(new GridLayout(3,3); / 設(shè)置網(wǎng)格布局(3 行3 列共9 個(gè)網(wǎng)格)l1=new Label(標(biāo)簽1);b1 = new Button(按鈕1);b2 = new Button(按鈕2);b3 = new Button(按鈕3);b4 = new Button(按鈕4);add(l1
4、);add(b1);add(b2);add(b3);add(new Label();add(b4);add(new Button(按鈕5);add( new Button(按鈕6);add(new Label(標(biāo)簽2);(3) 編譯程序LX5_1.java。(4) 編寫(xiě)顯示Applet 的頁(yè)面文件LX5_1.html,在瀏覽器顯示結(jié)果如圖6.1 所示。2 在面板中添加組件(1) 程序功能:在Applet 中添加面板容器,并分別在Applet、面板容器中添加組件并使用不同的布局管理方式。(2) 編寫(xiě)LX5_2.java 程序文件,源代碼如下。public class LX5_2 extends
5、Applet public void init() /設(shè)置最底層的 Applet 容器為順序布局setFont(new Font(Arial,Font.PLAIN,20);Label l=new Label(這是最底層的 Applet 容器中的標(biāo)簽,Label.CENTER);add(l);Panel panel1=new Panel();add( panel1);panel1.setBackground(Color.blue);panel1.setForeground(Color.red);panel1.setLayout(new BorderLayout();/設(shè)置邊界布局panel1.a
6、dd(North, new Button(北);panel1.add(South, new Button(南);panel1.add(East, new Button(東);panel1.add(West, new Button(西);panel1.add(Center, new Label(這是在 Panel1 面板 中部添加的標(biāo)簽);Panel panel2=new Panel();add( panel2);panel2.setLayout(new GridLayout(3,1); /設(shè)置網(wǎng)格布局Choice c=new Choice ();/創(chuàng)建下拉式列表c.addItem(北京);c.
7、addItem(上海);c.addItem(天津);Label l1=new Label(這是在 Panel2 面板中的標(biāo)簽);Button b1=new Button(Panel2 中的按鈕);panel2.setBackground(Color.green);panel2.add(l1);panel2.add(b1);panel2.add(c);(3) 編譯程序LX5_2.java。(4) 編寫(xiě)顯示Applet 的頁(yè)面文件LX5_2.html,在瀏覽器顯示結(jié)果如圖6.2 所示。二了解事件處理機(jī)制在圖形用戶界面中,程序和用戶的交互是通過(guò)組件響應(yīng)各種事件來(lái)實(shí)現(xiàn)的。例如,用戶單擊了一個(gè)按鈕,意味
8、著發(fā)生了按鈕的單擊事件;選中下拉框中的一個(gè)選項(xiàng),意味著發(fā)生了一個(gè)選項(xiàng)事件。在Java 中能產(chǎn)生事件的組件叫做事件源,如按鈕。如果希望對(duì)單擊按鈕事件進(jìn)行處理,可給事件源(按鈕)注冊(cè)一個(gè)事件監(jiān)聽(tīng)器(如包含按鈕的容器),如同簽訂了一個(gè)委托合同,當(dāng)事件源發(fā)生事件時(shí),事件監(jiān)聽(tīng)器就代替事件源對(duì)發(fā)生的事件進(jìn)行處理,這就是所謂的委托事件處理機(jī)制。1單擊按鈕的事件處理程序(1)程序功能:使用手工布局設(shè)置組件標(biāo)簽、按鈕的位置,為按鈕編寫(xiě)單擊事件處理方法。當(dāng)用戶用鼠標(biāo)單擊按鈕時(shí),會(huì)聽(tīng)到一聲響聲。(2)編寫(xiě)LX5_3.java 程序文件,源代碼如下。public class LX5_3 extends Applet
9、implements ActionListener / 實(shí)現(xiàn)動(dòng)作事件監(jiān)聽(tīng)接口public void init() setLayout(null);/關(guān)閉默認(rèn)的順序管理布局Label l=new Label(按一下按鈕可聽(tīng)到響聲!, Label.CENTER);add(l);l.setBounds(40,10,150,30);Button b=new Button(按鈕);add(b);b.setBounds(60,50,60,40);b.addActionListener (this); / 注冊(cè)事件源的動(dòng)作監(jiān)聽(tīng)者public void actionPerformed(ActionEvent
10、e) /實(shí)現(xiàn)單擊事件接口的方法Toolkit.getDefaultToolkit ().beep(); /單擊事件發(fā)生時(shí)作出的反應(yīng)(3)編譯程序LX5_2.java。(4)編寫(xiě)顯示Applet 的頁(yè)面文件LX5_3.html,在瀏覽器顯示結(jié)果如圖6.3 所示。2. 選擇復(fù)選框和單選框按鈕的事件處理程序(1) 程序功能:在Applte 上創(chuàng)建復(fù)選框、單選框、文本區(qū)域、單行文本框等組件,并實(shí)現(xiàn)根據(jù)用戶輸入的10 進(jìn)制數(shù),選擇不同選項(xiàng)可轉(zhuǎn)換為2、8、16 進(jìn)制數(shù)。(2) 編寫(xiě)LX5_4.java 程序文件,源代碼如下。public class LX5_4 extends Applet impleme
11、nts ItemListener TextArea area=new TextArea(6,30);/創(chuàng)建文本區(qū)String Item=2 進(jìn)制,8 進(jìn)制,16 進(jìn)制,10 進(jìn)制;Checkbox cb=new Checkbox5;Checkbox radio=new Checkbox5;Label l=new Label(輸入10 進(jìn)制數(shù));TextField TF=new TextField(6);/創(chuàng)建單行文本框public void init() add(l);add(TF);add(area);add(new Label( 請(qǐng)選擇進(jìn)制:);for(int i=0; i4; i+) c
12、bi=new Checkbox(Itemi);add(cbi);cbi.addItemListener(this);CheckboxGroup cbGroup=new CheckboxGroup();/創(chuàng)建單選框add(new Label(請(qǐng)選擇進(jìn)制:);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.g
13、etText();if (e.getItem ()=2 進(jìn)制)area.append (你選擇的是+e.getItem ()+ Integer.toBinaryString(x)+n);if (e.getItem ()=8 進(jìn)制)area.append (你選擇的是+e.getItem ()+ Integer.toOctalString(x)+n);if (e.getItem ()=16 進(jìn)制)area.append (你選擇的是+e.getItem ()+Integer.toHexString(x)+n);if (e.getItem ()=10 進(jìn)制)area.append (你選擇的是+e
14、.getItem ()+x+n);(3) 編譯程序LX5_4.java。(4) 編寫(xiě)顯示Applet 的頁(yè)面文件LX5_4.html,在瀏覽器顯示結(jié)果如圖6.4 所示。三建立獨(dú)立運(yùn)行的窗口界面并使用匿名類(lèi)最常使用的包含組件的容器是窗口,在Java 中窗口由Frame 類(lèi)生成。1創(chuàng)建一個(gè)窗口界面(1)程序功能:創(chuàng)建一個(gè)具有關(guān)閉功能的空白窗口。(2)編寫(xiě)LX5_5_W.java 程序文件,源代碼如下。public class LX5_5_W public static void main(String args) new LX5_5_W();LX5_5_W()Frame f=new Frame(初
15、始窗口);/創(chuàng)建窗口對(duì)象f.setSize(350,200);/設(shè)置窗口大小f.setVisible(true);/設(shè)置窗口是可視的f.addWindowListener(new WindowAdapter() /為窗口添加窗口事件適配器public void windowClosing(WindowEvent e) /關(guān)閉窗口事件的方法System.exit(0); ); (3)編譯并運(yùn)行程序,會(huì)出現(xiàn)一個(gè)界面窗口如圖6.5 所示。它可以最大化、最小化,單擊按鈕可以關(guān)閉該窗口。2在窗口中添加組件(1)程序功能:在窗口中添加組件。(2)編寫(xiě)LX5_6.java 程序文件,源代碼如下。public
16、 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); /設(shè)置窗口大小setLocation(200,200);/設(shè)置窗口顯示位置setFont(new Font(Aria
17、l,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); add(f); add(btn1); add(btn2);tf1.addActionListener(
18、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.getSource()=tf1)Area.append(用戶名:
19、+tf1.getText()+n);if (e.getSource()=tf2)Area.append(電 話:+tf2.getText()+n);if (e.getSource()=btn2) for (int i=0; i100000000; i+);dispose();/只關(guān)閉當(dāng)前窗口,注銷(xiāo)該對(duì)象(3)編譯并運(yùn)行程序,界面窗口如圖6.6 所示。3為窗口添加菜單(1)程序功能:在窗口中添加菜單欄,在菜單欄添加菜單項(xiàng),并添加下拉菜單和2 級(jí)菜單,通過(guò)選擇菜單項(xiàng)可以執(zhí)行不同操作,如“打開(kāi)”可打開(kāi)LX5_6 類(lèi)生成的窗口。(2)編寫(xiě)LX5_7.java 程序文件,源代碼如下。public cla
20、ss LX5_7 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(打開(kāi));MenuItem close=new MenuItem(關(guān)閉);MenuItem exit=new MenuItem(退出);Menu m12=new Menu(編輯);MenuItem copy=new MenuItem(復(fù)制);M
21、enuItem cut=new MenuItem(剪切);MenuItem paste=new MenuItem(粘貼);Menu m2=new Menu(幫助);MenuItem content=new MenuItem(目錄);MenuItem index=new MenuItem(索引);MenuItem about=new MenuItem(關(guān)于);LX5_7() super(添加菜單的窗口);setSize(350,200);add(South,p);p.add(b);b.addActionListener(this);m1.add(open); / 將菜單項(xiàng)加入到菜單m1 中m1.
22、add(close);m1.addSeparator(); /在菜單中添加分隔條m1.add(exit);open.addActionListener(this); /給菜單項(xiàng)open 注冊(cè)事件監(jiān)聽(tīng)器exit.addActionListener(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(abou
23、t);mb.add(m2);setMenuBar(mb); / 設(shè)置菜單欄為mbshow();/ 顯示組件public static void main(String args) new LX5_7();public void actionPerformed(ActionEvent e) if (e.getActionCommand()=退出)System.exit(0);if (e.getActionCommand()=打開(kāi))new LX5_6();(3)編譯并運(yùn)行程序,界面窗口如圖6.7 所示。四使用Swing 組件在Java 中,能夠?qū)崿F(xiàn)圖形用戶界面的類(lèi)庫(kù)有兩個(gè):java.awt 和ja
24、vax.swing。前者稱(chēng)為抽象窗口工具庫(kù)AWT(Abstract Windows Toolkit),后者是Java 基礎(chǔ)類(lèi)庫(kù)JFC(Java Foundation Classes)的一個(gè)組成部分,它提供了一套功能更強(qiáng)、數(shù)量更多、更美觀的圖形用戶界面組件。Swing 組件名稱(chēng)和AWT 組件名稱(chēng)基本相同,但以J 開(kāi)頭,例如AWT 按鈕類(lèi)的名稱(chēng)是Button,在Swing 中的名稱(chēng)則是JButton。1在JApplet 中添加Swing 組件(1)程序功能:在JApplet 中添加3 個(gè)帶有圖片的按鈕和一個(gè)帶有圖片的標(biāo)簽。(2) 準(zhǔn)備圖片文件: 在當(dāng)前目錄下建立一個(gè)image 文件夾, 存放4 個(gè)
25、圖片文件, 例如PreviousArrow.gif。(3)編寫(xiě)LX5_8.java 程序文件,源代碼如下。public class LX5_8 extends JApplet Container pane;JPanel panel1,panel2;JButton button1,button2,button3;JLabel label;public void init() pane=getContentPane();panel1=new JPanel(new FlowLayout();panel2=new JPanel(new FlowLayout();ImageIcon icon = new
26、 ImageIcon(image/PreviousArrow.gif, );button1=new JButton(icon);button2=new JButton(new ImageIcon(image/go.GIF);button3=new JButton(new ImageIcon(image/NextArrow.gif);label=new JLabel(圖像標(biāo)簽,new ImageIcon(image/Candl02.gif),SwingConstants.CENTER);pane.setBackground(new Color(255,255,200);panel1.setBac
27、kground(new Color(255,255,104);panel2.setBackground(new Color(255,255,214);button1.setToolTipText(向上翻頁(yè)按鈕);button2.setToolTipText(跳轉(zhuǎn)按鈕);button3.setToolTipText(向下翻頁(yè)按鈕);pane.add(North,panel1);pane.add(panel2,BorderLayout.SOUTH);panel1.add(button1);panel1.add(button2);panel1.add(button3);panel2.add(labe
28、l);(4)編譯LX5_8.java。(5)編寫(xiě)顯示LX5_8.class 的頁(yè)面文件。(6)使用appletviewer 查看程序,結(jié)果如圖6.8 所示。2.在JFrame 窗口中添加組件(1)程序功能:創(chuàng)建JFrame 窗口,并在其中添加工具欄。(2)準(zhǔn)備圖片文件: 在當(dāng)前目錄下建立一個(gè)image 文件夾, 存放3 個(gè)圖片文件, 例如PreviousArrow.gif。(3)編寫(xiě)LX5_9.java 程序文件,源代碼如下。public class LX5_9 extends JFrame implements ActionListener JButton button1,button2,b
29、utton3;JToolBar toolBar;JTextArea textArea;JScrollPane scrollPane;JPanel panel;public static void main(String 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/Pre
30、viousArrow.gif);button2=new JButton(new ImageIcon(image/go.GIF);button3=new JButton(new ImageIcon(image/NextArrow.gif);button1.addActionListener(this);button2.addActionListener(this);button3.addActionListener(this);toolBar=new JToolBar();toolBar.add(button1);toolBar.add(button2);toolBar.add(button3)
31、;textArea=new JTextArea(6,30);scrollPane=new JScrollPane(textArea);panel=new JPanel();setContentPane(panel);panel.setLayout(new BorderLayout();panel.setPreferredSize(new Dimension(300,150);panel.add(toolBar,BorderLayout.NORTH);panel.add(scrollPane,BorderLayout.CENTER);pack();show();public void actio
32、nPerformed(ActionEvent e) String s=;if (e.getSource()=button1)s=左按鈕被單擊n;else if (e.getSource()=button2)s=中按鈕被單擊n;else if (e.getSource()=button3)s=右按鈕被單擊n;textArea.append(s);(4)編譯LX5_9.java。(5)運(yùn)行LX5_9.class,產(chǎn)生的窗口界面如圖6.9 所示。五使用自定義對(duì)話框與內(nèi)部類(lèi)對(duì)話框是GUI 中很常見(jiàn)的窗口對(duì)象,有著廣泛的應(yīng)用。對(duì)話框和普通窗口最大的不同就是對(duì)話框是依附在某個(gè)窗口上,一旦它所依附的窗口關(guān)閉
33、了,對(duì)話框也要隨著關(guān)閉。Java 提供了Dialog 類(lèi)用于制作自定義對(duì)話框,當(dāng)需要改變一些數(shù)據(jù)或需要一個(gè)提示窗口時(shí)可使用自定義對(duì)話框。1創(chuàng)建自定義對(duì)話框的應(yīng)用程序(1)程序功能:創(chuàng)建一個(gè)帶有文本區(qū)及“對(duì)話框”按鈕的父窗口,單擊“對(duì)話框”按鈕可打開(kāi)一個(gè)自定義對(duì)話框,從中可以定義行和列的數(shù)值,關(guān)閉對(duì)話框其設(shè)置的設(shè)置會(huì)顯示在父窗口的文本區(qū)中。(2)編寫(xiě)LX5_10.java 程序文件,源代碼如下。public class LX5_10 extends JFrame implements ActionListener int row=10, col=40;JPanel p1=new JPanel()
34、, p2=new JPanel();JTextArea ta=new JTextArea(文本區(qū)行數(shù):+row+ 列數(shù):+col, row, col);JScrollPane scrollPane=new JScrollPane(ta);Button exit=new Button(關(guān)閉);Button dialog=new Button(對(duì)話框);JPanel panel=new JPanel();LX5_10() setContentPane(panel);setTitle(帶有對(duì)話框的父窗口);panel.setPreferredSize(new Dimension(500,200);p
35、anel.setLayout(new BorderLayout();panel.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 LX5_10();public void actionPerformed(Acti
36、onEvent 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(請(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(LX5_10
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年有機(jī)磷酸酯類(lèi)中毒解毒藥項(xiàng)目發(fā)展計(jì)劃
- 合作炒股協(xié)議合同范本
- 相鄰宅基地建房協(xié)議范文模板
- 全屋凈水合同范本
- 單位籃球教練合同范例
- 個(gè)人紅酒購(gòu)買(mǎi)合同范本
- 醫(yī)院門(mén)診員工合同范例
- 合伙人經(jīng)營(yíng)合同范本
- 北京單位用工合同范本
- 做瓷磚合同范本
- 《輕鋼建筑》課件
- 尿源性膿毒血癥護(hù)理
- 2024解析:第十一章 功和機(jī)械能-講核心(解析版)
- 中建住宅樓懸挑卸料平臺(tái)專(zhuān)項(xiàng)施工方案
- 【MOOC】數(shù)據(jù)庫(kù)系統(tǒng)(下):管理與技術(shù)-哈爾濱工業(yè)大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 日本留學(xué)中介簽約合同
- 鐵路安全應(yīng)急預(yù)案
- 《城市軌道交通車(chē)輛構(gòu)造》 課件 2.2 不銹鋼車(chē)體結(jié)構(gòu)認(rèn)知
- 古詩(shī)詞誦讀《李憑箜篌引》 公開(kāi)課一等獎(jiǎng)創(chuàng)新教案統(tǒng)編版高中語(yǔ)文選擇性必修中冊(cè)
- 小學(xué)生日常行為規(guī)范實(shí)施方案
- 2024年遼寧省鞍山岫巖滿族自治縣事業(yè)單位招聘(150人)歷年高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
評(píng)論
0/150
提交評(píng)論