图形用户界面.docx
《图形用户界面.docx》由会员分享,可在线阅读,更多相关《图形用户界面.docx(22页珍藏版)》请在冰豆网上搜索。
图形用户界面
实验六图形用户界面
一.实验目的:
1)了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法,
2)了解如何使用布局管理器对组件进行管理,以及如何使用Java的事件处理机制。
二.实验要求
1)掌握在Applet容器中添加组件的方法,掌握使用布局管理器对组件进行管理的方法。
2)理解Java的事件处理机制,掌握为不同组件编写事件处理程序的方法。
3)掌握编写独立运行的窗口界面的方法。
4)了解JavaSwing组件的使用方法。
5)了解对话框的使用方法。
3.实验内容
3.1创建图形用户界面
图形用户界面(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,在浏览器显示结果如图6.1所示。
2.在面板中添加组件
(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所示。
3.2了解事件处理机制
在图形用户界面中,程序和用户的交互是通过组件响应各种事件来实现的。
例如,用户单击了一个按钮,意味着发生了按钮的单击事件;选中下拉框中的一个选项,意味着发生了一个选项事件。
在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_2.java。
(4)编写显示Applet的页面文件LX6_3.html,在浏览器显示结果如图6.3所示。
2.选择复选框和单选框按钮的事件处理程序
(1)程序功能:
在Applet上创建复选框、单选框、文本区域、单行文本框等组件,并实现根据用户输入的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;i<4;i++){
cb[i]=newCheckbox(Item[i]);
add(cb[i]);
cb[i].addItemListener(this);
}
CheckboxGroupcbGroup=newCheckboxGroup();//创建单选框
add(newLabel("请选择进制:
"));
for(inti=0;i<4;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,在浏览器显示结果如图6.4所示。
3.3建立独立运行的窗口界面并使用匿名类
最常使用的包含组件的容器是窗口,在Java中窗口由Frame类生成。
1.创建一个窗口界面
(1)程序功能:
创建一个具有关闭功能的空白窗口。
(2)编写LX6_5_W.java程序文件,源代码如下。
importjava.awt.*;
importjava.awt.event.*;
publicclassLX6_5_W{
publicstaticvoidmain(String[]args){
newLX6_5_W();
}
LX6_5_W(){
Framef=newFrame("初始窗口");//创建窗口对象
f.