《实验五 图形用户界面设计.docx》由会员分享,可在线阅读,更多相关《实验五 图形用户界面设计.docx(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验五 图形用户界面设计 实验五图形用户界面设计(2) 一、实验目的 (1) 掌握编写独立运行的窗口界面的方法。 (2) 了解 Java Swing 组件的使用方法。 (3) 理解 Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。 (4) 掌握常用图形用户界面的设计方法。 二、实验要求 通过实验理解java的事件处理机制,能够对常见事件AcitonEvent, WindowEvent, KeyEvent, MouseEvent进行处理。 三、实验内容 (一)建立独立运行的窗口界面并使用匿名类处理事件 最常使用的容器是窗口,在Java 中窗口由Frame或JFrame 类生成,编
2、写Demo5_21.java 程序文件。 程序功能:创建一个具有关闭功能的空白窗口。源代码如下: import java.awt.*; import java.awt.event.*; public class Demo5_21 Demo5_21() Frame f=new Frame(初始窗口); f.setSize(350,200); f.setVisible(true); /为窗口添加窗口事件适配器 f.addWindowListener(new WindowAdapter() /内部匿名类关闭窗口,实现方法windowClosing public void windowClosing(
3、WindowEvent e) System.exit(0); ); public static void main(String args) new Demo5_21(); 编译并运行程序 思考 导入包时,可否将import java.awt.event.*;省去不写。为什么? (二)使用Swing 组件、了解事件处理机制 在Java 中,能够实现图形用户界面的类库有两个:java.awt 和javax.swing。前者称为抽象窗口工具库AWT(Abstract Windows Toolkit),后者是Java 基础类库JFC(Java Foundation Classes) 的一个组成部分,
4、它提供了一套功能更强、数量更多、更美观的图形用户界面组件。Swing 组件名称和AWT 组件名称基本相同,但以J 开头,例如AWT 按钮类的名称是Button,在Swing 中的名称则是JButton。 先运行程序下面程序Demo5_22.java,然后按提示来分析、修改并体验程序。import java.awt.*; import java.awt.event.*; import javax.swing.*; class Demo5_22 extends JFrame implements ActionListener JTextField TOprand1; JTextField TOpr
5、and2; JTextField Result; JLabel LAdd,LSum; JButton BAdd,BClear; Container c=null; /构造方法,形成用户界面 public Demo5_22 () TOprand1=new JTextField(0.0000); TOprand2=new JTextField(0.0000); Result=new JTextField(0.0000); LAdd=new JLabel(+); LSum=new JLabel(=); BAdd=new JButton(加法); BClear=new JButton(清除); c=t
6、his.getContentPane(); c.setLayout(new FlowLayout(); c.add(TOprand1); c.add(LAdd); c.add(TOprand2); c.add(LSum); c.add(Result); c.add(BAdd); c.add(BClear); this.pack(); this.setVisible(true); BAdd.addActionListener(this); BClear.addActionListener(this); /匿名内部类实现事件处理 this.addWindowListener(new WindowA
7、dapter() public void windowClosing(WindowEvent e) System.exit(0); ); public void actionPerformed(ActionEvent e) double a,b,sum; if(e.getSource()=BAdd) a=Double.valueOf(TOprand1.getText().doubleValue(); b=Double.valueOf(TOprand2.getText().doubleValue(); sum=a+b; Result.setText(String.valueOf(sum); if
8、(e.getSource()=BClear) TOprand1.setText(0.0000); TOprand2.setText(0.0000); Result.setText(String.valueOf(0.0000); public static void main(String args) Demo5_22 mainFrame = new Demo5_22(); mainFrame.setSize(350, 200); mainFrame.setTitle(GUI实验一); 基本容器JFrame比起Frame有何特点?为什么这里定义了一个 c=this.getContentPane(
9、); 采用了什么布局管理器,各组件按什么次序加入组件的? 很多地方用到this,这个this指什么? 分析事件执行方法 actionPerformed里面的下面三条语句起何作用? a=Double.valueOf(TOprand1.getText().doubleValue(); b=Double.valueOf(TOprand2.getText().doubleValue(); Result.setText(String.valueOf(sum); 程序中对按钮事件的监听采用了什么方法? (三)ItemEvent事件,进一步理解事件处理机制 1选择复选框和单选框按钮的事件处理程序 程序功能:
10、在Applte 上创建复选框、单选框、文本区域、单行文本框等组件,并实现根据用户输入的10 进制数,选择不同选项可转换为2、8、16 进制数。编写Demo6_4.java 程序文件,源代码如下: import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class Demo5_23 extends Applet implements ItemListener TextArea area=new TextArea(6,30);/创建文本区 String Item=2 进制,8 进制,16 进制,10
11、 进制; 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(this); CheckboxGroup cbG
12、roup=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.getItem ()+ Inte
13、ger.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); 编译程序Demo5_23.java。编写显示Applet 的页面文件Demo5_23.h
14、tml (四)菜单的响应事件 import java.awt.*; import java.awt.event.*; public class Demo5_24 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(关闭); MenuIte
15、m exit=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(关于); Demo5_24 () super(添加菜单的窗口); setSi
16、ze(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(p
17、aste); m1.add(m12);/将m12 作为2 级菜单添加到m1 菜单项中 m2.add(content); m2.add(index); m2.addSeparator(); m2.add(about); mb.add(m2); setMenuBar(mb); / 设置菜单栏为mb show();/ 显示组件 public static void main(String args) new Demo5_24(); public void actionPerformed(ActionEvent e) if (e.getActionCommand()=退出) System.exit(0); if (e.getActionCommand()=打开) new Demo5_3(); 四、实验练习题 1.在上周实验的基础上,添加事件响应,运行结果如图示界面。用户名和密码正确,显示如左图,否则显示如图。 2.在上周程序基础上完成猜数字游戏。 3.完成下面“个人信息调查”用户界面的设计,当选择相应选项时,单击“提交”,在文本框中显示提示信息,单击“清空”,内容清空
限制150内