实验二 图形用户界面设计.doc_第1页
实验二 图形用户界面设计.doc_第2页
实验二 图形用户界面设计.doc_第3页
实验二 图形用户界面设计.doc_第4页
实验二 图形用户界面设计.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验二 图形用户界面设计一、实验目的 通过编程和上机实验,了解图形用户界面基本组件窗口、按钮、文本框、选择框等的使用方法,了解如何使用布局管理器对组件进行管理,以及如何使用Java 的事件处理机制。二、实验要求 1 掌握在窗体中添加组件的方法,掌握使用布局管理器对组件进行管理的方法。2 理解Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。3 掌握编写独立运行的窗口界面的方法。三、实验内容基本指导图形用户界面(Graphic User Interface ,简称GUI)是为方便用户使用设计的窗口界面,在图形用户界面中用户可以看到什么就操作什么,取代了在字符方式下知道是什么后才能操作什么的方式。组件(Component)是构成GUI 的基本要素,通过对不同事件的响应来完成和用户的交互或组件之间的交互。组件一般作为一个对象放置在容器(Container)内,容器是能容纳和排列组件的对象,如Applet、Panel(面板)、Frame(窗口)等。通过容器的add()方法把组件加入到容器中。Awt和swing的基本使用方法是一致的,在本实验中大部分以awt为例。 1 实现基本的登录窗口,掌握窗体以及常用组件的使用方式。import java.awt.*;import javax.swing.*;public class LoginFrame extends JFrame public LoginFrame() super(User Login); this.setSize(200,120); /设置框架尺寸 this.setLocation(300,240); this.setLayout(new FlowLayout(); /框架流布局,居中 this.add(new Label(userid); /创建标签,添加到框架上 this.add(new TextField(user1,10); /创建文本行 this.add(new Label(password); this.add(new TextField(10); /创建20列的文本行 this.add(new Button(Ok); /创建按钮 this.add(new Button(Cancel); this.setVisible(true); /显示框架 public static void main(String arg) new LoginFrame(); 2 观察以下程序并自己尝试布局管理器的使用import java.awt.*;import javax.swing.*; class HelloSwing public static void main(String args) JFrame frame = new JFrame(HelloSwing); / frame.setLayout(new FlowLayout( FlowLayout.RIGHT); frame.setSize(600,400); /* Button btnEast=new Button(东); btnEast.setPreferredSize(new Dimension(220,12); Button btnWest=new Button(西); Button btnNorth=new Button(北); Button btnSouth=new Button(南); Button btnCenter=new Button(中); frame.add(btnEast,BorderLayout.EAST); frame.add(btnWest,BorderLayout.WEST); frame.add(btnNorth,BorderLayout.NORTH); frame.add(btnSouth,BorderLayout.SOUTH); frame.add(btnCenter,BorderLayout.CENTER); frame.setVisible(true); */ Button btn; / 声明按钮数组 String str=1,2,3,4,5,6,7,8,9; frame.setLayout(new GridLayout(3,3); btn=new Buttonstr.length; / 创建按钮数组 for(int i=0;istr.length;i+) btni=new Button(stri); frame.add(btni);frame.setVisible(true); 3 编程实现简单的标签、按钮组件,实现点击按钮,改变标签的功能。import java.awt.*;import java.awt.event.*; class LX51 extends Frame implements ActionListener/声明类实现ActionListener接口,是ActionEvent事件的监听者 Label prompt ; /声明标签 Button btn; /声明按钮 LX51() super(LX51); this.setSize(320,120); this.setBackground(Color.blue); this.setLocation(300,240); this.setLayout(new FlowLayout(FlowLayout.LEFT); / prompt =new Label(你好); btn =new Button(操作); add(prompt); add(btn); btn.addActionListener(this); /btn注册给监听者 this.setVisible(true); public void actionPerformed(ActionEvent e)/用户单击btn时系统自动调用本方法 if(prompt.getText()=你好) prompt.setText(再见); else prompt.setText(你好); public static void main(String arg) new LX51(); 编译运行程序,并思考如下问题:1) 组件如何创建?2) 具有事件处理功能的类有什么特点?3) 如何把组件注册给监听者? 尝试修改程序利用单独的类作为事件监听器。4、创建一个具有关闭功能的空白窗口界面。它可以最大化、最小化,单击按钮可以关闭该窗口。import java.awt.*;import java.awt.event.*;class MyFrame extends Frame public MyFrame() setTitle(测试适配器类); setSize(300, 200); addWindowListener(new MyWindowAdapter(); class MyWindowAdapter extends WindowAdapter public void windowClosing(WindowEvent event) System.exit(0); public static void main(String args) MyFrame frm = new MyFrame(); frm.setVisible(true); 5编写独立窗口程序,在窗口中添加常用组件。注意在本例中addWindowListener(new WindowAdapter() 中采用的是匿名内部类,尝试与第二题比较。这在java界面设计中是非常常用的。import java.awt.*;import java.awt.event.*;public class LX56 extends Frame implements ActionListener Button btn1, btn2;TextField f,tf1,tf2;TextArea Area;LX56() super(添加组件的窗口);addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0););setSize(350,250); /设置窗口大小setLocation(200,200);/设置窗口显示位置setFont(new Font(Arial,Font.PLAIN,12); /设置字体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(this); tf2.addActionListener(this);btn1.addActionListener(this); btn2.addActionListener(this);show();public static void main(String args) new LX56();public void actionPerformed(ActionEvent e) 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) dispose();/只关闭当前窗口,注销该对象 思考:1) 独立窗口程序所实现的类是哪个?2)布局管理器的使用情况?3) 事件处理情况?6编程在独立窗口中添加菜单栏,在菜单栏添加菜单项,并添加下拉菜单和2 级菜单。import java.awt.*;import java.awt.event.*;public class LX57 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(关闭);MenuItem 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(关于);LX57() 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); / 设置菜单栏为mbshow();/ 显示组件public static void main(String args) new LX57();public void actionPerformed(ActionEvent e) if (e.getActionCommand()=退出)System.exit(0);if (e.getActionCommand()=打开)new LX56(); /打开LX56程序 思考:1)窗口菜单如何实现? 2)二级菜单的设计和菜单项的区别是什么 3)如何在菜单项中打开其他应用程序?7编程实现GUI界面,包括文本域、文本框、按钮等相关功能,实现模拟登陆验证功能。import java.awt.*; import java.awt.event.*; class LX52 extends Frame implements ActionListener, WindowListener private TextField UserField; private TextField PasswdField; /显示用户名和口令的正确信息 private TextArea info; private Dialog dialog; private Label label_dialog; private static final String user=java;/预定义一个用户及口令 private static final String passwd=123; /用于显示登录成功!或用户名或密码不正确! /创建Button组件的实例对象 /设置并增加组件 LX52() super(login); this.setSize(320,320); this.setBackground(java.awt.Color.lightGray); this.setLocation(300,240); setLayout(new FlowLayout(FlowLayout.LEFT);/设置布局管理器 /创建并添加TextArea组件info info = new TextArea( 请输入用户名和密码:n用户名:javan密码:123n,6,60); add(info); Label userLabel = new Label(用户名); add(userLabel); UserField = new TextField(10); add(UserField); Label passwdLabel = new Label(口令); add(passwdLabel); PasswdField = new TextField(10); PasswdField.setEchoChar(*); /设置响应字符为* add(PasswdField); Button button = new Button(登录); add(button); button.addActionListener(this); dialog = new Dialog(this,提示,true); /模式窗口 dialog.setSize(240,80); label_dialog = new Label(,Label.CENTER); /标签的字符串为空,居中对齐 dialog.add(label_dialog); dialog.addWindowListener(this);this.addWindowListener(this); this.setVisible(true); /* *显示登录结果 */ /* *处理登录按钮事件 */ public void actionPerformed(ActionEvent ev) String label = ev.getActionCommand(); if (label.equals(登录) String userIn = UserField.getText(); /得到输入的用户名 String passwdIn = PasswdField.getText(); /得到输入的口令 /判断输入的用户名和口令是否正确 if (user.equals(userIn) & passwd.equals(pa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论