实验5 图形用户界面设计.docx
- 文档编号:6445354
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:17
- 大小:46.94KB
实验5 图形用户界面设计.docx
《实验5 图形用户界面设计.docx》由会员分享,可在线阅读,更多相关《实验5 图形用户界面设计.docx(17页珍藏版)》请在冰豆网上搜索。
实验5图形用户界面设计
实验5图形用户界面设计
一、实验目的
了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法,了解如何使用布局管理器对组件进行管理,以及如何使用Java的事件处理机制。
二、实验要求
1.掌握在JApplet容器中添加组件的方法,掌握使用布局管理器对组件进行管理的方法。
2.理解Java的事件处理机制,掌握为不同组件编写事件处理程序的方法。
3.掌握编写独立运行的窗口界面的方法。
4.了解JavaSwing组件的使用方法。
5.了解对话框的使用方法。
三、实验内容
(一)创建图形用户界面
图形用户界面(GraphicUserInterface,简称GUI)是为方便用户使用设计的窗口界面,在图
形用户界面中用户可以看到什么就操作什么,取代了在字符方式下知道是什么后才能操作什么的方式。
组件(Component)是构成GUI的基本要素,通过对不同事件的响应来完成和用户的交互或组件之间的交互。
组件一般作为一个对象放置在容器(Container)内,容器是能容纳和排列组件的对象,如Applet、Panel(面板)、Frame(窗口)等。
通过容器的add方法把组件加入到容器中。
1.在Applet中添加标签、按钮并使用网格布局
♦程序功能:
在Applet容器中添加组件标签、按钮,并使用网格布局管理器排列组件在容器中的位置。
♦编写KY7_1.java程序文件,源代码如下。
importjava.awt.*;
importjava.applet.Applet;
publicclassKY6_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"));
}
}
♦编译程序KY7_1.java。
♦编写显示Applet的页面文件KY7_1.html
2.在面板中添加组件
♦程序功能:
在Applet中添加面板容器,并分别在Applet、面板容器中添加组件并使用不同的布局管理方式。
♦编写KY7_2.java程序文件,源代码如下。
importjava.awt.*;
importjava.awt.Color;
importjava.applet.Applet;
publicclassKY6_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);
100
panel2.add(b1);
panel2.add(c);
}
}
♦编译程序KY7_2.java。
♦编写显示Applet的页面文件KY7_2.html
(二)了解事件处理机制
在图形用户界面中,程序和用户的交互是通过组件响应各种事件来实现的。
例如,用户单击了一个按钮,意味着发生了按钮的单击事件;选中下拉框中的一个选项,意味着发生了一个选项事件。
在Java中能产生事件的组件叫做事件源,如按钮。
如果希望对单击按钮事件进行处理,可给事件源(按钮)注册一个事件监听器(如包含按钮的容器),如同签订了一个委托合同,当事件源发生事件时,事件监听器就代替事件源对发生的事件进行处理,这就是所谓的委托事件处理机制。
1.单击按钮的事件处理程序
♦程序功能:
使用手工布局设置组件标签、按钮的位置,为按钮编写单击事件处理方法。
当用户用鼠标单击按钮时,会听到一声响声。
♦编写KY7_3.java程序文件,源代码如下。
importjava.awt.*;
importjava.awt.event.*;
importjava.applet.Applet;
publicclassKY6_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();//单击事件发生时作出的反应
}
}
♦编译程序KY7_2.java
♦编写显示Applet的页面文件KY7_3.html
2.选择复选框和单选框按钮的事件处理程序
♦程序功能:
在Applte上创建复选框、单选框、文本区域、单行文本框等组件,并实现根据用户输入的10进制数,选择不同选项可转换为2、8、16进制数。
♦编写KY7_4.java程序文件,源代码如下。
importjava.applet.Applet;
importjava.awt.*;
importjava.awt.event.*;
publicclassKY6_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");
}
}
♦编译程序KY7_4.java。
♦编写显示Applet的页面文件KY7_4.html
(三)建立独立运行的窗口界面并使用匿名类
最常使用的包含组件的容器是窗口,在Java中窗口由Frame类生成。
1.创建一个窗口界面
♦程序功能:
创建一个具有关闭功能的空白窗口。
♦编写KY7_5_W.java程序文件,源代码如下。
importjava.awt.*;
importjava.awt.event.*;
publicclassKY7_5_W{
publicstaticvoidmain(String[]args){
newKY7_5_W();
}
KY7_5_W(){
Framef=newFrame("初始窗口");//创建窗口对象
f.setSize(350,200);//设置窗口大小
f.setVisible(true);//设置窗口是可视的
f.addWindowListener(newWindowAdapter(){//为窗口添加窗口事件适配器
publicvoidwindowClosing(WindowEvente){//关闭窗口事件的方法
System.exit(0);
}
};
}
}
♦编译并运行程序
2.在窗口中添加组件
♦程序功能:
在窗口中添加组件。
♦编写KY7_6.java程序文件,源代码如下。
importjava.awt.*;
importjava.awt.event.*;
publicclassKY7_6extendsFrameimplementsActionListener{
Buttonbtn1,btn2;
TextFieldf,tf1,tf2;
TextAreaArea;
KY7_6(){
super("添加组件的窗口");
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
setSize(350,250);//设置窗口大小
setLocation(200,200);//设置窗口显示位置
setFont(newFont("Arial",Font.PLAIN,12));//设置字体
setLayout(newFlowLayout());
Area=newTextArea(6,40);
tf1=newTextField(10);tf2=newTextField(10);
btn1=newButton("显示");btn2=newButton("退出");
f=newTextField(20);
add(Area);add(newLabel("用户名"));
add(tf1);add(newLabel("电话"));
add(tf2);add(f);add(btn1);add(btn2);
tf1.addActionListener(this);tf2.addActionListener(this);
btn1.addActionListener(this);btn2.addActionListener(this);
show();
}
publicstaticvoidmain(Stringargs[]){
newKY7_6();
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==btn1)
f.setText("你按下了“"+e.getActionCommand()+"”按钮");
if(e.getSource()==tf1)
Area.append("用户名:
"+tf1.getText()+"\n");
if(e.getSource()==tf2)
Area.append("电话:
"+tf2.getText()+"\n");
if(e.getSource()==btn2){
for(inti=0;i<100000000;i++);
dispose();//只关闭当前窗口,注销该对象
}
}
}
♦编译并运行程序
3.为窗口添加菜单
♦程序功能:
在窗口中添加菜单栏,在菜单栏添加菜单项,并添加下拉菜单和2级菜单,通过选择菜单项可以执行不同操作,如“打开”可打开KY6_6类生成的窗口。
♦编写KY7_7.java程序文件,源代码如下。
importjava.awt.*;
importjava.awt.event.*;
publicclassKY7_7extendsFrameimplementsActionListener{
Panelp=newPanel();
Buttonb=newButton("退出");
MenuBarmb=newMenuBar();//以下生成菜单组件对象
Menum1=newMenu("文件");
MenuItemopen=newMenuItem("打开");
MenuItemclose=newMenuItem("关闭");
MenuItemexit=newMenuItem("退出");
Menum12=newMenu("编辑");
MenuItemcopy=newMenuItem("复制");
MenuItemcut=newMenuItem("剪切");
MenuItempaste=newMenuItem("粘贴");
Menum2=newMenu("帮助");
MenuItemcontent=newMenuItem("目录");
MenuItemindex=newMenuItem("索引");
MenuItemabout=newMenuItem("关于");
KY7_7(){
super("添加菜单的窗口");
setSize(350,200);
add("South",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级菜单添加到m1菜单项中
m2.add(content);m2.add(index);m2.addSeparator();m2.add(about);
mb.add(m2);
setMenuBar(mb);//设置菜单栏为mb
show();//显示组件
}
publicstaticvoidmain(Stringargs[]){
newKY7_7();
}
publicvoidactionPerformed(ActionEvente){
if(e.getActionCommand()=="退出")
System.exit(0);
if(e.getActionCommand()=="打开")
newKY7_6();
}
}
♦编译并运行程序
(四)使用Swing组件
在Java中,能够实现图形用户界面的类库有两个:
java.awt和javax.swing。
前者称为抽象窗口工具库AWT(AbstractWindowsToolkit),后者是Java基础类库JFC(JavaFoundationClasses)
的一个组成部分,它提供了一套功能更强、数量更多、更美观的图形用户界面组件。
Swing组件名称和AWT组件名称基本相同,但以J开头,例如AWT按钮类的名称是Button,在Swing中的名称则是JButton。
1.在JApplet中添加Swing组件
♦程序功能:
在JApplet中添加3个带有图片的按钮和一个带有图片的标签。
♦准备图片文件:
在当前目录下建立一个image文件夹,存放4个图片文件,例如
♦PreviousArrow.gif。
♦编写KY7_8.java程序文件,源代码如下。
importjavax.swing.*;
importjava.awt.*;
importjava.awt.Color;
publicclassKY7_8extendsJApplet{
Containerpane;
JPanelpanel1,panel2;
JButtonbutton1,button2,button3;
JLabellabel;
publicvoidinit(){
pane=getContentPane();
panel1=newJPanel(newFlowLayout());
panel2=newJPanel(newFlowLayout());
ImageIconicon=newImageIcon("image/PreviousArrow.gif","");
button1=newJButton(icon);
button2=newJButton(newImageIcon("image/go.GIF"));
button3=newJButton(newImageIcon("image/NextArrow.gif"));
label=newJLabel("图像标签",
newImageIcon("image/Candl02.gif"),SwingConstants.CENTER);
pane.setBackground(newColor(255,255,200));
panel1.setBackground(newColor(255,255,104));
panel2.setBackground(newColor(255,255,214));
button1.setToolTipText("向上翻页按钮");
button2.setToolTipText("跳转按钮");
button3.setToolTipText("向下翻页按钮");
pane.add("North",panel1);
pane.add(panel2,BorderLayout.SOUTH);
panel1.add(button1);
panel1.add(button2);
panel1.add(button3);
panel2.add(label);
}
}
♦编译KY7_8.java。
♦编写显示KY7_8.class的页面文件。
♦使用appletviewer查看程序结果
2.在JFrame窗口中添加组件
♦程序功能:
创建JFrame窗口,并在其中添加工具栏。
♦准备图片文件:
在当前目录下建立一个image文件夹,存放3个图片文件,例如
♦PreviousArrow.gif。
♦编写KY7_9.java程序文件,源代码如下。
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassKY7_9extendsJFrameimplementsActionListener{
JButtonbutton1,button2,button3;
JToolBartoolBar;
JTextAreatextArea;
JScrollPanescrollPane;
JPanelpanel;
publicstaticvoidmain(String[]args){
newKY7_9();
}
publicKY7_9(){
super("带有工具栏按钮的窗口");
addWindowListener(newWindowAdapt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验5 图形用户界面设计 实验 图形 用户界面 设计