互联网软件应用与开发实验指导书实验二熟悉Applet,GUI编程实验目的:本实验旨在巩固同学们对上课所讲Applet,异常处理,java的控制加深理解,图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法,对java的语法和编程有一个更加深入的理解,为同学们以后的能够用Java进行独立地编写桌面程序打下一定的基础。了解如何使用布局管理器对组件进行管理,以及如何使用Java的事件处理机制。实验内容:创建一个java项目,命名为experiment2。(如何创建项目参考《实验一》的项目创建方法。)(一)创建图形用户界面图形用户界面(GraphicUserInterface,简称GUI)是为方便用户使用设计的窗口界面,在图形用户界面中用户可以看到什么就操作什么,取代了在字符方式下知道是什么后才能操作什么的方式。组件(Component)是构成GUI的基本要素,通过对不同事件的响应来完成和用户的交互或组件之间的交互。组件一般作为一个对象放置在容器(Container)内,容器是能容纳和排列组件的对象,如Applet、Panel(面板)、Frame(窗口)等。通过容器的add方法把组件加入到容器中。1.在Applet中添加标签、按钮并使用网格布局(1)程序功能在Applet容器中添加组件标签、按钮,并使用网格布局管理器排列组件在容器中的位置。(2)编写LX6_1.java程序文件,源代码如下:importjava.awt.*;importjava.applet.Applet;publicclassLX6_1extendsApplet{Labell1;Buttonb1,b2,b3,b4,b5,b6;publicvoidinit(){互联网软件应用与开发实验指导书setLayout(newGridLayout(3,3));//设置网格布局(3行3列共9个网格)l1=newLabel(标签1);b1=newButton(按钮1);b2=newButton(按钮2);b3=newButton(按钮3);b4=newButton(按钮4);add(l1);add(b1);add(b2);add(b3);add(newLabel());add(b4);add(newButton(按钮5));add(newButton(按钮6));add(newLabel(标签2));}}(3)编译程序LX6_1.java。(4)编写显示Applet的页面文件LX6_1.html,在浏览器显示结果如图2.1所示。图2.12.在面板中添加组件(1)程序功能:在Applet中添加面板容器,并分别在Applet、面板容器中添加组件并使用不同的布局管理方式。(2)编写LX6_2.java程序文件,源代码如下。importjava.awt.*;importjava.awt.Color;importjava.applet.Applet;publicclassLX6_2extendsApplet{publicvoidinit()互联网软件应用与开发实验指导书{//设置最底层的Applet容器为顺序布局setFont(newFont(Arial,Font.PLAIN,20));Labell=newLabel(这是最底层的Applet容器中的标签,Label.CENTER);add(l);Panelpanel1=newPanel();add(panel1);panel1.setBackground(Color.blue);panel1.setForeground(Color.red);panel1.setLayout(newBorderLayout());//设置边界布局panel1.add(North,newButton(北));panel1.add(South,newButton(南));panel1.add(East,newButton(东));panel1.add(West,newButton(西));panel1.add(Center,newLabel(这是在Panel1面板中部添加的标签));Panelpanel2=newPanel();add(panel2);panel2.setLayout(newGridLayout(3,1));//设置网格布局Choicec=newChoice();//创建下拉式列表c.addItem(北京);c.addItem(上海);c.addItem(天津);Labell1=newLabel(这是在Panel2面板中的标签);Buttonb1=newButton(Panel2中的按钮);panel2.setBackground(Color.green);panel2.add(l1);panel2.add(b1);panel2.add(c);}}(3)编译程序LX6_2.java。(4)编写显示Applet的页面文件LX6_2.html,在浏览器显示结果如图6.2所示。互联网软件应用与开发实验指导书图2.23、编写程序实现下图功能。(二)了解事件处理机制在图形用户界面中,程序和用户的交互是通过组件响应各种事件来实现的。例如,用户单击了一个按钮,意味着发生了按钮的单击事件;选中下拉框中的一个选项,意味着发生了一个选项事件。在Java中能产生事件的组件叫做事件源,如按钮。如果希望对单击按钮事件进行处理,可给事件源(按钮)注册一个事件监听器(如包含按钮的容器),如同签订了一个委托合同,当事件源发生事件时,事件监听器就代替事件源对发生的事件进行处理,这就是所谓的委托事件处理机制。1.单击按钮的事件处理程序(1)程序功能:使用手工布局设置组件标签、按钮的位置,为按钮编写单击事件处理方法。当用户用鼠标单击按钮时,会听到一声响声。(2)编写LX6_3.java程序文件,源代码如下。importjava.awt.*;importjava.awt.event.*;importjava.applet.Applet;publicclassLX6_3extendsAppletimplementsActionListener{//实现动作事件监听接口互联网软件应用与开发实验指导书publicvoidinit(){setLayout(null);//关闭默认的顺序管理布局Labell=newLabel(按一下按钮可听到响声!,Label.CENTER);add(l);l.setBounds(40,10,150,30);Buttonb=newButton(按钮);add(b);b.setBounds(60,50,60,40);b.addActionListener(this);//注册事件源的动作监听者}publicvoidactionPerformed(ActionEvente){//实现单击事件接口的方法Toolkit.getDefaultToolkit().beep();//单击事件发生时作出的反应}}(3)编译程序LX6_3.java。(4)编写显示Applet的页面文件LX6_3.html,在浏览器显示结果如图3.3所示。图2.32.选择复选框和单选框按钮的事件处理程序(1)程序功能:在Applte上创建复选框、单选框、文本区域、单行文本框等组件,并实现根据用户输入的10进制数,选择不同选项可转换为2、8、16进制数。(2)编写LX6_4.java程序文件,源代码如下。importjava.applet.Applet;importjava.awt.*;importjava.awt.event.*;publicclassLX6_4extendsAppletimplementsItemListener{TextAreaarea=newTextArea(6,30);//创建文本区互联网软件应用与开发实验指导书StringItem[]={2进制,8进制,16进制,10进制};Checkboxcb[]=newCheckbox[5];Checkboxradio[]=newCheckbox[5];Labell=newLabel(输入10进制数);TextFieldTF=newTextField(6);//创建单行文本框publicvoidinit(){add(l);add(TF);add(area);add(newLabel(请选择进制:));for(inti=0;i4;i++){cb[i]=newCheckbox(Item[i]);add(cb[i]);cb[i].addItemListener(this);}CheckboxGroupcbGroup=newCheckboxGroup();//创建单选框add(newLabel(请选择进制:));for(inti=0;i4;i++){radio[i]=newCheckbox(Item[i],cbGroup,false);add(radio[i]);radio[i].addItemListener(this);}}publicvoiditemStateChanged(ItemEvente){intx=Integer.parseInt(TF.getText());if(e.getItem()==2进制)area.append(你选择的是+e.getItem()+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)编译程序LX6_4.java。(4)编写显示Applet的页面文件LX6_4.html,在浏览器显示结果如图3.4所示。互联网软件应用与开发实验指导书图2.4(三)在Experiment2下创建自己的JApplet.效果类似于下图。图2.5下面是实验二的JApplet代码:importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassdrawpictureextendsJAppletimplementsActionListener{intx=30,y=30;JButtonjb1,jb2;JLabeljl1;JTextFieldjt1;JPaneljp;互联网软件应用与开发实验指导书Containerc;publicvoidinit(){c=getContentPane();c.setLayout(newBorderLayout());jb1=newJButton(点击);jb2=newJButton(Reset);jl1=newJLabel(增加半径值:);jp=newJPanel();jt1=newJTextField(20);jp.add(jl1);jp.add(jt1);jp.add(jb1);jp.add(jb2);c.add(jp,BorderLayout.SOUTH);jb1.addActionListener(this);jb2.addActionListener(this);setSize(600,600);setVisible(true);}publicvoidactionPerformed(ActionEventevt){if(evt.getSource()==jb1){x=x+Integer.parseInt(jt1.getText());y=y+Integer.parseInt(jt1.getText());repaint();}if(evt.getSource()==jb2){x=30;y=30;repaint();}}publicvoidpa