实验八 图形用户界面设计

合集下载

图形图像用户界面设计

图形图像用户界面设计

实习报告课程名称多媒体实验实习题目图形图像用户界面设计专业通信工程班级通信(2)班学号学生姓名实习成绩指导教师吴娱2011年5月图形图像用户界面设计一、实验目的了解句柄图形的基本概念,掌握图形用户界面的基本设计方法。

二、实验要求上机完成实验题目,独立完成实验报告。

三、实验内容设计简单的图像用户界面。

四、实验步骤1、在MATLAB的命令窗口(Command Window)中运行guide命令:打开GUIDE界面,如下:然后,选择空模板(Blank GUI),点击OK,即可打开GUIDE的设计界面,如下:如下:单下添加菜单项:“打开”、“保存”、“退出”。

如下:文件,所有的程序都是要写在这个M文件里面的。

在编程中,每一个鼠标动作都对应一个Callback函数。

那么菜单项也是如此。

在界面上,单击鼠标右键选择“Property Inspector”,即可打开属性窗口。

当点击不同的控件时,其对应的属性都会在这里显示,根据需要可以进行修改。

最主要的属性莫过于Tag属性和String属性。

设置当前的Figure窗口的Tag属性为:figure_pjimage,窗口的标题(Name属性)为:图像处理实例。

如下:然后,点击工具栏的保存按钮。

之后,点击工具栏的运行按钮(Run)。

程序运行时的样子,是这样的:文件下面的菜单项和快捷键我们都能看见,但是我们没有写程序,所以就算点也没有什么响应。

还有如果不想设置快捷键,可以在Menu Editor中设置,只要把其选择为Ctrl+none就行了。

这样的话,保存项就没有快捷键了。

可以通过上面的按钮“View”来查看该菜单项的响应函数,也就是Callback函数。

也可以在pjimage.m中看,比如保存的Tag属性是m_file_save,那么它对应的Callback函数的名字就是m_file_save_Callback。

依次类推了。

2、下面来写打开菜单项的函数,要打开一个图片,当然要用打开对话框了。

图形用户界面实验报告

图形用户界面实验报告

图形用户接口一、实验目的·了解嵌入式系统图形界面的基本编程方法·学习图形库的制作二、原理概述2.1 Frame Buffer显示屏的整个显示区域,在系统内会有一段存储空间与之对应。

通过改变该存储空间的内容达到改变显示信息的目的。

该存储空间被称为Frame Buffer,或显存。

显示屏上的每个点都与frame buffer里的一个像素对应。

显示屏可以用单色或彩色来显示。

单色用1位来表示,彩色有2、4、8、16、24、32等位色。

显示屏还有单屏模式和双屏模式。

2.2 Frame Buffer与色彩计算机反映自然界的色彩是通过RGB值来表示的。

像素的RGB值可以直接从Frame Buffer里得到,或是从调色板间接得到。

实验室的显示器为16位色,因此Frame Buffer里的每个单元为16位:高5位为R,中间6位为G,低5位为B。

2.3 LCD控制器LCD控制器是Frame Buffer与显示屏之间的一个中间部件,负责从Frame Buffer中提取数据,进行处理,并传输到显示屏上。

本实验用到的开发板处理器PXA270集成了LCD控制器,实验中用到的显示屏是16位的TFT LCD,像素分辨率为 640×480。

三、实验内容3.1Frame Buffer操作Frame Buffer的设备是/dev/fb。

Struct fb_var_screeninfo vinfo;Fd = open("/dev/fb",O_RDWR)ioctl(fd,FBIOGET_VSCREENINFO,&vinfo)来获取它的可变参数,其中包括显示器的色位,分辨率等信息(vinfo.bits_per_pixel、vinfo.xres、vinfo.yres)。

获得缓冲区首地址,调用方式为:unsignedchar*fbp=0;fbp=(unsigned char*)mmap(0,sreensize,\PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);将显示缓冲区清零,memset(fbp,0,screensize),即可实现清屏。

图形用户界面设计

图形用户界面设计

文字处理类的: 文本框、文本区域
命令类的: 按钮、菜单等
– GUI组件的作用是完成与用户的交互。包括接收
用户的命令、文本或选择输入,向用户显示一段
文本或一个图形等Jav。a的图形用户界面
7
界面元素
4
使用组件通常需要如下的步骤
– 创建某组件类的对象,指定其大小等属性。
– 使用某种布局策略,将该组件对象加入到某个容 器中的某指定位置处。
Java的图形用户界面
24
显示图象
4
显示图象的方法
drawImage(Image 对象, x, y,背景色, ImageObserver); – java.awt.Graphics类中定义了此方法
– 第一个参数是保存图像数据的Image对象。
– 第二、三个参数是图像的左上角坐标,它们决定了 图像在容器中的显示位置。
return super.handleEvent(evt);
}
public static void main(String[] args){
Frame f=new Empty();
f.setSize(300,200);
f.setVisible(true);}来自Java的图形用户界面
12
}
绘制用户自定义成分
Java的图形用户界面
16
绘制图形及其相关方法 4
画圆或椭圆
– drawOval(x,y,w,h) – x,y为绘制圆或椭圆的左上角的坐标,w,h确定了
椭圆的宽度和高度
画实心圆或椭圆
– fillOval(x,y,w,h)
画多边形
– drawPolygon(X坐标数组,Y坐标数组,顶点个数) P.185

实验 图形用户界面2

实验 图形用户界面2

实验图形用户界面2 (4学时)【实验目的】1.了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法,2.了解如何使用布局管理器对组件进行管理,以及如何使用Java 的事件处理机制。

【实验要求】1. 掌握在容器中添加组件的方法,掌握使用布局管理器对组件进行管理的方法。

2. 理解Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。

3. 掌握编写独立运行的窗口界面的方法。

4. 了解Java Swing 组件的使用方法。

5. 了解对话框的使用方法。

【实验内容】三.在Applet容器中添加组件的方法1.创建一个小应用程序,在其中添加组件(1)程序功能:在用户名及电话号码中输入完信息后,信息显示在最上面的文本域中;点击显示按钮,在相应的文本框中显示;点击退出按钮退出程序。

(2)编写appletTest.java 程序文件,源代码如下。

import java.awt.*;import java.awt.event.*;import javax.swing.*;public class appletTest extends JApplet implements ActionListener { Button btn1, btn2;TextField f,tf1,tf2;TextArea Area;JPanel pane1,pane2,pane3;Container pane;public void init() {setSize(500,300);pane=getContentPane();pane1= new JPanel();pane2= new JPanel();pane3= new JPanel();pane.setLayout(new GridLayout(1,3));pane.add(pane1);pane.add(pane2);pane.add(pane3);setLayout(new GridLayout(3,3));Area=new TextArea (4,40);tf1=new TextField(10); tf2=new TextField(10);btn1=new Button("显示"); btn2=new Button("退出");f=new TextField(20);pane1.add(Area); pane2.add(new Label("用户名"));pane2.add(tf1); pane2.add(new Label("电话"));pane2.add(tf2); pane3.add(f); pane3.add(btn1); pane3.add(btn2);tf1.addActionListener(this); tf2.addActionListener(this);btn1.addActionListener(this); btn2.addActionListener(this);}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) {System.exit(0);}}}(3)编译并运行程序。

Java图形用户界面实验报告

Java图形用户界面实验报告

西安邮电大学(计算机学院)课内实验报告实验名称:图形用户界面专业名称:计算机科学与技术班级:计科1405班学生姓名:高宏伟学号:04141152指导教师:刘霞林实验日期:2016.11.24一、实验目的了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法,了解如何使用布局管理器对组件进行管理,以及如何使用Java 的事件处理机制。

二、实验要求1. 掌握使用布局管理器对组件进行管理的方法。

2. 理解Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。

3. 掌握编写独立运行的窗口界面的方法。

4. 掌握组件的使用方法。

5. 了解对话框的使用方法。

三、实验内容(一)算术测试。

✧实验要求:编写一个算术测试小软件,用来训练小学生的算术能力。

程序由3个类组成,其中Teacher类对象负责给出算术题目,并判断回答者的答案是否正确;ComputerFrame类对象负责为算术题目提供视图,比如用户可以通过ComputerFrame类对象提供的GUI界面看到题目,并通过该GUI界面给出题目的答案;MainClass是软件的主类。

✧程序模板:Teacher.javapublic class Teacher{ int numberOne,numberTwo;String operator="";boolean right;public int giveNumberOne(int n){ numberOne=(int)(Math.random()*n)+1;return numberOne;}public int giveNumberT wo(int n){ numberTwo=(int)(Math.random()*n)+1;return numberTwo;}public String giveOperator(){ double d=Math.random();if(d>=0.5)operator="+";elseoperator="-";return operator;}public boolean getRight(int answer){ if(operator.equals("+")){ if(answer==numberOne+numberTwo)right=true;elseright=false;}else if(operator.equals("-")){ if(answer==numberOne-numberTwo)right=true;elseright=false;}return right;}}ComputerFrame.javaimport java.awt.*;import java.awt.event.*;public class ComputerFrame extends Frame implements ActionListener { TextField textOne,textTwo,textResult;Button getProblem,giveAnwser;Label operatorLabel,message;Teacher teacher;ComputerFrame(String s){ super(s);teacher=new Teacher();setLayout(new FlowLayout());textOne=【代码1】 //创建textOne,其可见字符长是10textTwo=【代码2】 //创建textTwo,其可见字符长是10textResult=【代码3】 //创建textResult,其可见字符长是10operatorLabel=new Label("+");message=new Label("你还没有回答呢");getProblem=new Button("获取题目");giveAnwser=new Button("确认答案");add(getProblem);add(textOne);add(operatorLabel);add(textTwo);add(new Label("="));add(textResult);add(giveAnwser);add(message);textResult.requestFocus();textOne.setEditable(false);textTwo.setEditable(false);【代码4】//将当前窗口注册为getProblem的ActionEvent事件监视器【代码5】//将当前窗口注册为giveAnwser的ActionEvent事件监视器【代码6】//将当前窗口注册为textResult的ActionEvent事件监视器 setBounds(100,100,450,100);setVisible(true);validate();addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) { System.exit(0);}});}public void actionPerformed(ActionEvent e){ if(【代码7】) //判断事件源是否是getProblem{ int number1=teacher.giveNumberOne(100);int number2=teacher.giveNumberTwo(100);String operator=teacher.givetOperator();textOne.setText(""+number1);textTwo.setText(""+number2);operatorLabel.setText(operator);message.setText("请回答");textResult.setText(null);}if(【代码8】) //判断事件源是否是giveAnwser{ String answer=textResult.getText();try{int result=Integer.parseInt(answer);if(teacher.getRight(result)==true){ message.setText("你回答正确");}else{ message.setText("你回答错误");}}catch(NumberFormatException ex){ message.setText("请输入数字字符");}}textResult.requestFocus();validate();}}MainClass.javapublic class MainClass{ public static void main(String args[]){ ComputerFrame frame;frame=【代码9】//创建窗口,其标题为:算术测试}}✧实验后的练习:1. 给上述程序增加测试乘、除的功能。

中职模块8图形用户界面编程电子课件 Java程序设计案例教程中职 中职 高教版(共35

中职模块8图形用户界面编程电子课件 Java程序设计案例教程中职   中职 高教版(共35

目录
5. 文本框
JTextField类是一种经常使用的组件,它主要提供了 下列几种构造方法:
JTextField():无参数的构造方法,创建一个初始为 空、可显示字符列数为0的文本框对象。 JTextField(String text):创建一个初始内容为text的文 本框对象。
JTextField(String text,int col):创建一个初始内容 为text、可显示字符列数为col的文本框对象。
目录
5. 文本框
文本框是接受用户输入的一种组件,SwTextField和JPasswordField,用于显示和编辑 较短的、不带格式的一行文本。其中,类 JPasswordField是类JTextField的子类,用于输入口令。 文本字段的使用基于动作事件(即主要监听动作类型的 事件ActionEvent),与按钮等简单控件的用法类似。
目录
8.2.4 布局管理
BorderLayout布局管理器
BorderLayout是JFrame和 JDialog两种容器的默认布局管理器, 它将容器分为5个部分,分别命名为 North、South、West、East和 Center。在使用这种布局管理器管理 组件的排列时,需要为组件指明放的 具体位置,默认位置为中间位置。如 果将组件位置放在North或South,组 件的宽度将延长至与容器一样宽,而 高度不变。如果将组件放在West或 East,组件的高度将延长至容器的高 度减去North和South之后的高度,而 宽度不变。
显示包含3个按钮的确认对话框,按钮分别为“是”、“否”和“撤 销”,该方法返回整型值0、1或2,根据返回值可分别编程执行相应 的操作。
目录
2. 中间容器
Swing的中间容器包含了一些可以被使用在许多不同 环境下的中间层容器,主要包括面板容器(JPanel类)、 分隔窗格(JSplitPane类)、带滚动条的窗格容器 (JScrollPane类)、工具栏(JToolBar类)等。它们 都是JComponent的子类,通常放在其他容器类中。这 里主要介绍用途广泛的面板容器。

实验七 - 八

实验七 - 八

实验七–八图形用户界面程序设计
一、实验目的
1、掌握JavaGUI程序设计的结构和方法
2、掌握常用组件的定义与应用
3、掌握Java事件处理的方法
二、实验内容
1、设计一个能够进行各种进位计数制的转换应用程序,它将一个指定为二、八、十、十六进制的整型数据转换成另一种进制的整型数据。

供参考的GUI程序界面如图所示。

2、设计一个函数计算器(小程序),能够求一个double类型数据的指定函数值。

GUI程序界面自己设定,要求有输入数字的按钮,不用键盘输入数字,只能用数字按钮来输入数字。

三、实验要求
1、实验六:完成以上两题的GUI界面设计
2、实验七:完成以上两题的事件触发。

实验八--图形用户界面设计

实验八--图形用户界面设计

实验八图形用户界面(GUI)设计(说明:本次实验在4学时内独立完成)一、实验目的1. 熟悉各种控件和界面菜单的制作。

2. 学会编写控件对象的回调程序(callback函数)。

3. 熟练使用GUI开发工具GUIDE设计用户界面。

二、实验预备知识图形用户界面(Graphical User Interface,简称GUI) 是指由窗口、光标、按键、菜单、文字说明等对象构成的一个人与计算机的交互界面。

用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。

GUI 的最重要组成是用户菜单(uimenu)和用户控件(uicontrol)。

关于界面菜单,可以参考课件相关部分的介绍,这里主要介绍控件的类型、属性和制作方法。

1.用户控件的类型控件是事件响应的图形对象。

当某一事件发生时,应用程序会做出响应并执行某些预定的功能子程序(即回调函数Callback)。

MATLAB中有10种不同类型的控件(下图):①单功能按钮(Push Button);②单选按钮(Radio Button);③双位按钮(ToggleButton);④复选框(Check Box);⑤列表框(List Box);⑥弹出框(Popup Menu);⑦静态文本框(Static Text);⑧可编辑文本框(Edit Text);⑨滑标或滚动条(Slider);⑩框架(Frame)。

这些控件大致可分为两种,一种为动作控件,鼠标点击这些控件时会产生相应的响应;一种为静态控件,是不产生响应的控件,如静态文本框等。

表1给出了各种控件的描述。

2.用户控件的属性每种控件都有一些可以设置的属性参数,用于表现控件的外形、功能及效果。

属性由两部分组成:属性名和属性值,它们必须是成对出现的。

用户可以在创建控件对象时,设定其属性值,未指定时将使用系统缺省值。

下面介绍部分较常用的控件属性:●Tag取值为字符串,定义了控件的标识(标签),在任何程序中都可以通过这个标识控制该控件对象。

图形用户界面(八)

图形用户界面(八)

实验八图形用户界面1.实验目的1、学会处理ActionEvent事件2、学会使用布局类3、学习焦点、鼠标和键盘事件2.实验内容1、根据附录里的源代码,按照注释要求,完成代码填空,使程序能够运行得出结果。

1) 实验1算术测试2) 实验2布局与日历3) 实验3华容道2、完成习题:1)修改实验1的代码,再增加“小学生”级别,并增加测试乘、除法的功能。

2)编写应用程序,有一个标题为“移动”的窗口,窗口布局为null,在窗口中有两个按钮,单击一个按钮让另一个按钮移动。

3.实验步骤1、完成实验内容1中的程序填空、编译通过,并运行得到正确结果。

2、设计完成实验内容2中要求的程序,并通过编译、运行,最后得到正确结果。

4.评分标准1.A——内容功能完善,编程风格好,人机接口界面好;2.B——内容功能完善,编程风格良好,人机接口界面良好;3.C——完成必做内容;4.D——能完成必做内容;5.E——未按时完成必做内容,或者抄袭(雷同者全部为E).参照书上实验按模版要求,将【代码】替换为Java程序代码,编写好完整的程序文档,最后运行得到的相关文件,把实验所得文件一起打包上交。

(压缩包的文件名为:学号后三位和名字开头字母,如109zhh.RAR|ZIP)实验1 算术测试模板代码Teacher.javaimport java.util.Random;import java.awt.event.*;import javax.swing.*;public class Teacher implements ActionListener{int numberOne,numberTwo;String operator=" ";boolean isRight;Random random;int maxInteger;JTextField textOne,textTwo,textResult;JLabel operatorLabel,message;Teacher(){random=new Random();}public void setMaxInteger(int n){maxInteger=n;}public void actionPerformed(ActionEvent e){String str=e.getActionCommand();if(str.equals("getProblem")){numberOne=random.nextInt(maxInteger)+1;numberTwo=random.nextInt(maxInteger)+1;double d=Math.random();if(d>=0.5){operator="+";}else{operator="-";}textOne.setText(""+numberOne);textTwo.setText(""+numberTwo);operatorLabel.setText(operator);message.setText("请回答");textResult.setText(null);}else if(str.equals("answer")){String answer=textResult.getText();try{int result=Integer.parseInt(answer);if(operator.equals("+")){if(result==numberOne+numberTwo){message.setText("你回答正确");}else{message.setText("你回答错误");}}else if(operator.equals("-")){if(result==numberOne-numberTwo){message.setText("你回答正确");}else{message.setText("你回答错误");}}}catch(NumberFormatException ex){message.setText("请输入数字字符");}}}public void setJTextField(JTextField...t){textOne =t[0];textTwo =t[1];textResult =t[2];}public void setJLabel(bel){operatorLabel=label[0];message=label[1];}}ComputerFrame.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;public class ComputerFrame extends JFrame{JMenuBar menubar;JMenu choiceGrade;JMenuItem grade1,grade2;JTextField textOne,textTwo,textResult;JButton getProblem,giveAnswer;JLabel operatorLabel,message;Teacher teacherZhang;ComputerFrame(){teacherZhang=new Teacher();teacherZhang.setMaxInteger(20);setLayout(new FlowLayout());menubar=new JMenuBar();choiceGrade=new JMenu("选择级别");grade1=new JMenuItem("幼儿级别");grade2=new JMenuItem("儿童级别");grade1.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){teacherZhang.setMaxInteger(10);}});grade2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){teacherZhang.setMaxInteger(50);}});choiceGrade.add(grade1);choiceGrade.add(grade2);menubar.add(choiceGrade);setJMenuBar(menubar);//【代码1】//创建textOne,其可见字符长是5textTwo=new JTextField(5);textResult=new JTextField(5);operatorLabel=new JLabel("+");operatorLabel.setFont(new Font("Arial",Font.BOLD,20));message=new JLabel("你还没有回答呢");getProblem=new JButton("获取题目");giveAnswer=new JButton("确认答案");add(getProblem);add(textOne);add(operatorLabel);add(textTwo);add(new Label("="));add(textResult);add(giveAnswer);add(message);textResult.requestFocus();textOne.setEditable(false);textTwo.setEditable(false);getProblem.setActionCommand("getProblem");textResult.setActionCommand("answer");giveAnswer.setActionCommand("answer");teacherZhang.setJTextField(textOne,textTwo,textResult);teacherZhang.setJLabel(operatorLabel,message);//【代码2】//将teacherZhang注册为getProblem的ActionEvent事件监视器//【代码3】//将teacherZhang注册为giveAnwser的ActionEvent事件监视器//【代码4】//将teacherZhang注册为textResult的ActionEvent事件监视器setVisible(true);validate();setDefaultCloseOperation(DISPOSE_ON_CLOSE);}}MainClass.javapublic class MainClass {public static void main(String[] args) {ComputerFrame frame;frame=new ComputerFrame();frame.setTitle("算术测试");frame.setBounds(100,100,650,180);}}实验2 布局与日历模板代码CalendarBean.javaimport java.util.Calendar;public class CalendarBean {String [] day;int year=2008,month=0;public int getYear() {return year;}public void setYear(int year) {this.year = year;}public int getMonth() {return month;}public void setMonth(int month) {this.month = month;}public String [] getCalendar() {String [] a=new String[42];Calendar 日历=Calendar.getInstance();日历.set(year,month-1,1);int 星期几=日历.get(Calendar.DAY_OF_WEEK)-1;int day=0;if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) day=31;if(month==4||month==6||month==9||month==11)day=30;if(month==2) {if(((year%4==0)&&(year%100!=0))||(year%400==0))day=29;elseday=28;}for(int i=星期几,n=1;i<星期几+day;i++) {a[i]=String.valueOf(n) ;n++;}return a;}}CalendarFrame.javaimport java.awt.event.*;import javax.swing.*;import javax.swing.border.*;import java.awt.*;import java.util.*;public class CalendarFrame extends JFrame implements ActionListener { JLabel labelDay[]=new JLabel[42];JButton titleName[]=new JButton[7];String name[]={"日","一","二","三","四","五","六"};JButton nextMonth,previousMonth;CalendarBean calendar;JLabel showMessage=new JLabel("",JLabel.CENTER);int year=2011,month=2;public CalendarFrame(){JPanel pCenter=new JPanel();//【代码1】//将pCenter的布局设置为7行7列的GridLayout布局.for(int i=0;i<7;i++){titleName[i]=new JButton(name[i]);titleName[i].setBorder(new SoftBevelBorder(BevelBorder.RAISED));//【代码2】//pCenter中添加组件titleName[i]}for(int i=0;i<42;i++){labelDay[i]=new JLabel("",JLabel.CENTER);labelDay[i].setBorder(new SoftBevelBorder(BevelBorder.LOWERED));//【代码3】//pCenter中添加组件labelDay[i]}calendar=new CalendarBean();nextMonth=new JButton("下月");previousMonth=new JButton("上月");nextMonth.addActionListener(this);previousMonth.addActionListener(this);JPanel pNoth=new JPanel(),pSouth=new JPanel();pNoth.add(previousMonth);pNoth.add(nextMonth);pSouth.add(showMessage);//【代码4】//将窗口pCenter添加到中央区域//【代码5】//将窗口pNoth添加到北面区域//【代码6】//将窗口pSouth添加到南面区域setYearAndMonth(year,month);setDefaultCloseOperation(DISPOSE_ON_CLOSE);}public void setYearAndMonth(int y,int m){calendar.setYear(y);calendar.setMonth(m);String day[]= calendar.getCalendar();for(int i=0;i<42;i++){labelDay[i].setText(day[i]);}showMessage.setText("日历:"+calendar.getYear()+"年"+calendar.month+"月"); }public void actionPerformed(ActionEvent e) {if(e.getSource()==nextMonth){month=month+1;if(month>12){month=1;}calendar.setMonth(month);String day[]=calendar.getCalendar();for(int i=0;i<42;i++){labelDay[i].setText(day[i]);}}else if(e.getSource()==previousMonth){month=month-1;if(month<1){month=12;}calendar.setMonth(month);String day[]=calendar.getCalendar();for(int i=0;i<42;i++){labelDay[i].setText(day[i]);}}showMessage.setText("日历:"+calendar.getYear()+"年"+calendar.month+"月");}}CalendarMainClass.javapublic class CalendarMainClass {public static void main(String[] args) {CalendarFrame frame=new CalendarFrame();frame.setBounds(100,100,360,300);frame.setVisible(true);frame.setYearAndMonth(2013,5);}}实验3 华容道模板代码MainClassHRR.javapublic class MainClassHRR {public static void main(String[] args) {{ Hua_Rong_Road HRR=new Hua_Rong_Road();}}}Person.javaimport java.awt.event.*;import java.awt.*;import javax.swing.*;public class Person extends JButton implements FocusListener {int number;Color c=new Color(255,245,170);Font font=new Font("宋体",Font.BOLD,12);Person(int number,String s){ super(s);setBackground(c);setFont(font);this.number=number;c=getBackground();addFocusListener(this);}public void focusGained(FocusEvent e){ setBackground(Color.red);}public void focusLost(FocusEvent e){ setBackground(c);}}Hua_Rong_Road.javaimport java.awt.event.*;import java.awt.*;import javax.swing.*;public class Hua_Rong_Road extends JFrame implements MouseListener,KeyListener, ActionListener {Person person[]=new Person[10];JButton left,right,above,below;JButton restart=new JButton("重新开始");public Hua_Rong_Road(){ init();setBounds(100,100,320,360);setVisible(true);setDefaultCloseOperation(DISPOSE_ON_CLOSE);validate();}public void init(){ setLayout(null);add(restart);restart.setBounds(100,320,120,25);restart.addActionListener(this);String name[]={"曹操","关羽","张","刘","周","黄","兵","兵","兵","兵"};for(int k=0;k<name.length;k++){ person[k]=new Person(k,name[k]);person[k].addMouseListener(this);person[k].addKeyListener(this);add(person[k]);}person[0].setBounds(104,54,100,100);person[1].setBounds(104,154,100,50);person[2].setBounds(54, 154,50,100);person[3].setBounds(204,154,50,100);person[4].setBounds(54, 54, 50,100);person[5].setBounds(204, 54, 50,100);person[6].setBounds(54,254,50,50);person[7].setBounds(204,254,50,50);person[8].setBounds(104,204,50,50);person[9].setBounds(154,204,50,50);person[9].requestFocus();left=new JButton(); right=new JButton();above=new JButton(); below=new JButton();add(left); add(right);add(above); add(below);left.setBounds(49,49,5,260);right.setBounds(254,49,5,260);above.setBounds(49,49,210,5);below.setBounds(49,304,210,5);validate();}public void keyTyped(KeyEvent e){}public void keyReleased(KeyEvent e){}public void keyPressed(KeyEvent e){ Person man=(Person)e.getSource();if(e.getKeyCode()==KeyEvent.VK_DOWN){ go(man,below);}if(e.getKeyCode()==KeyEvent.VK_UP){ go(man,above);}if(e.getKeyCode()==KeyEvent.VK_LEFT){ go(man,left);}if(e.getKeyCode()==KeyEvent.VK_RIGHT){ go(man,right);}}public void mousePressed(MouseEvent e){ Person man=(Person)e.getSource();int x=-1,y=-1;x=e.getX();y=e.getY();int w=man.getBounds().width;int h=man.getBounds().height;if(y>h/2){ go(man,below);}if(y<h/2){ go(man,above);}if(x<w/2){ go(man,left);}if(x>w/2){ go(man,right);}}public void mouseReleased(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}public void mouseClicked(MouseEvent e) {}public void go(Person man,JButton direction){ boolean move=true;Rectangle manRect=man.getBounds();int x=man.getBounds().x;int y=man.getBounds().y;if(direction==below)y=y+50;else if(direction==above)y=y-50;else if(direction==left)x=x-50;else if(direction==right)x=x+50;manRect.setLocation(x,y);Rectangle directionRect=direction.getBounds();for(int k=0;k<10;k++){ Rectangle personRect=person[k].getBounds();if((manRect.intersects(personRect))&&(man.number!=k)){ move=false;}}if(manRect.intersects(directionRect)){ move=false;}if(move==true){ man.setLocation(x,y);}}public void actionPerformed(ActionEvent e){ dispose();new Hua_Rong_Road();}}。

实验8JavaFX图形用户界面设计

实验8JavaFX图形用户界面设计

实验8JaVaFX图形用户界面设计电信2班张声鹏(一)实验目的和要求:1.掌握JaVaFX程序的基本结构;2.掌握面板、U1组件以及形状使用;3.掌握颜色,字体和图标的使用。

(二)实验设备及材料:1.计算机;2.InteIIijIDEA或EdiPSe集成开发环境;3.OJ系统,网络畅通;(三)实验内容1.掌握JaVaFX程序的基本结构;2.掌握面板、U1组件以及形状使用;3.掌握颜色,字体和图标的使用(四)验收方式1.在本机上完成实验程序的设计和实现;2.提交电子版设计文档和工程代码。

(五)实验内容(1)完成并提交实验3的实验报告。

(2)用图形用户界面修改上述程序以《实验8JAVA图形用户界面设计》为题目提(六)程序实现packagesamp1e;import.SimpIeDateFormat;import.Date;importcation;import.FXM11oader;import.Group;import.Parent;import.Scene;import.;import.Stage;pub1icc1assMainextendsApp1ication{@0Verridepub1icvoidstart(Stageprimarystage)throwsException{Parentroot=(getC1ass().getResource(""));Groupgroup=newGroup();StringBuiIderresu1t=newStringBUi1der();〃题目字符串构造器1abe11abe1=new1abe1();Jishijishi=newJishi();Student[]stu=newStudent[3];stu[0]=newStudent("0001"z,'⅛≡");stu[1]=newStUdent("0002"J李四”);StU[2]=newStUdent("0003,“王五”);for(inti=0;i<20;i++){yunsuanys=newyunsuan();〃产生新的运算式RandomSturanStu=newRandOmStU();〃确认此轮答题学生Chutirobotchuti=newChutirobot(stu[nStu()].getStuName(),ys.getn1()z ys.getsymbo1()√s.getn2());d(mu());d("∖n");}d("当前时间:"+me());Stringtext=(ing());×t(te×t);i1dren().add(1abe1);t1e("小学生算术题");ene(newScene(group,800,500));();)pub1icstaticvoidmain(String[]args){1aunch(args);})c1assyunsuan{〃运算privateintn1,n2,symbo1;pub1icyunsuan(){this.n1=(int)(m()*100);do{this.n2=(int)(m()*100);I=(int)(m()*4);}whi1e(this.n2==0&&1==3);〃控制不会出现/0情况}pub1icintgetn1(){returnn1;}pub1icintgetn2(){returnn2;}pub1icchargetsymbo1(){if(symbo1==0)return'+,;e1seif(symbo1==1)returne1seif(symbo1==2)return'*';e1sereturn'∕,;}pub1icdoub1egetanswer(){if(symbo1==0)returnn1+n2;e1seif(symbo1==1)returnn1-n2;e1seif(symbo1==2)returnn1*n2;e1sereturn(doub1e)n1∕(doub1e)n2;})c1assChutirobot{Stringname;intn‰n2;charsymbo1;pub1icChutirobotfStringnamejntn1z charSymboIJntn2){=name;this.n1=n1;this.n2=∩2;1=symbo1;}pub1icStringgetTimu(){returnname+”同学,请你回答”+n1+””+SymbOI+,'',+n2+”等于多少?)}c1assJishi{pub1icstaticStringgetTime(){Datenow=newDate();SimpIeDateFormatdateFormat=newSimpIeDateFormatCyyyy年MM月dd日HH:mm:ss");〃可以方便地修改日期格式Stringtime=t(now);return(time);))c1assStudent{StringStuId z StuName;pub1icStudentfStringid,Stringname)(Stu1d=id;StuName=name;}StringgetStu1d(){returnStu1d;}StringgetStuName(){returnStuName;))c1assRandomStu{intn;RandomStu(){this.n=(int)(m()*3-0.01);}intgetRanStu(){returnn;})(七)运行结果(八)实验总结学会使用javafx进行UI界面搭建。

实验八-图形用户界面

实验八-图形用户界面

实验八图形用户界面【开发语言及实现平台或实验环境】Windows2000 或XP,JDK1.6与Jcreator4.0【实验目的】1.了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法,2.了解如何使用布局管理器对组件进行管理,以及如何使用Java 的事件处理机制。

【实验要求】1. 掌握在Applet 容器中添加组件的方法,掌握使用布局管理器对组件进行管理的方法。

2. 理解Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。

3. 掌握编写独立运行的窗口界面的方法。

4. 了解Java Swing 组件的使用方法。

5. 了解对话框的使用方法。

【实验内容】一.创建图形用户界面图形用户界面〔Graphic User Interface ,简称GUI〕是为方便用户使用设计的窗口界面,在图形用户界面中用户可以看到什么就操作什么,取代了在字符方式下知道是什么后才能操作什么的方式。

组件〔Component〕是构成GUI 的基本要素,通过对不同事件的响应来完成和用户的交互或组件之间的交互。

组件一般作为一个对象放置在容器〔Container〕内,容器是能容纳和排列组件的对象,如Applet、Panel〔面板〕、Frame〔窗口〕等。

通过容器的add 方法把组件加入到容器中。

1.在Applet 中添加标签、按钮并使用网格布局〔1〕程序功能:在Applet 容器中添加组件标签、按钮,并使用网格布局管理器排列组件在容器中的位置。

〔2〕编写LX8_1.java 程序文件,源代码如下。

import java.awt.*;import java.applet.Applet;public class LX8_1 extends Applet {Label l1;Button b1, b2, b3, b4, b5, b6;public void init() {setLayout(new GridLayout(3,3)); // 设置网格布局〔3 行3 列共9 个网格〕l1=new Label("标签1");b1 = new Button("按钮1");b2 = new Button("按钮2");b3 = new Button("按钮3");b4 = new Button("按钮4");add(l1);add(b1);add(b2);add(b3);add(new Label());add(b4);add(new Button("按钮5"));add( new Button("按钮6"));add(new Label("标签2"));}}〔3〕编译程序。

图形用户界面设计教案

图形用户界面设计教案

图形用户界面设计教案教案:图形用户界面设计一、教学目标1.让学生了解图形用户界面设计的基本概念和原则。

2.学会识别和评估优秀的图形用户界面设计。

3.掌握基本的图形用户界面设计技巧和方法。

4.能够设计出符合用户需求的简单图形用户界面。

二、教学内容1.图形用户界面设计的基本概念和原则a. 什么是图形用户界面设计?b. 图形用户界面设计的基本原则。

2.优秀图形用户界面设计的识别和评估a. 优秀图形用户界面的特点。

b. 如何识别和评估图形用户界面设计。

3.图形用户界面设计的基本技巧和方法a. 色彩和图形的运用。

b. 布局和排版的技巧。

c. 符号和图标的理解。

4.设计符合用户需求的简单图形用户界面a. 用户需求的分析。

b. 设计方案的制定和实施。

c. 简单图形用户界面的实现。

三、教学步骤1.开场(5分钟)a. 欢迎语,介绍课程内容和目标。

b. 提出教学计划和时间安排。

2.图形用户界面设计的基本概念和原则(15分钟)a. 讲解图形用户界面设计的基本概念。

b. 介绍图形用户界面设计的基本原则。

3.优秀图形用户界面设计的识别和评估(15分钟)a. 通过案例分析,展示优秀图形用户界面的特点。

b. 练习识别和评估图形用户界面设计的能力。

4.图形用户界面设计的基本技巧和方法(15分钟)a. 通过实例,介绍色彩和图形的运用技巧。

b. 分析布局和排版的常用技巧。

c. 讲解符号和图标的创作和运用。

5.设计符合用户需求的简单图形用户界面(30分钟)a. 分析用户需求,讨论设计方案的制定。

b. 进行简单图形用户界面的设计和实现。

6.总结(5分钟)a. 回顾本节课的主要内容。

b. 对学生的学习进行评估,鼓励他们在日常生活中运用所学的知识。

c. 预告下一节课的内容和目标。

7.作业布置(5分钟)a. 请学生设计一个符合自己需求的简单图形用户界面,并撰写一篇不少于200字的说明文章,描述自己的设计思路和目标用户的需求。

图形用户界面设计及事件处理

图形用户界面设计及事件处理

实验8 图形用户界面设计及简单事件处理(二)一、实验目的:
掌握各种组件及布局;
掌握事件的处理方法。

二、实验内容:
1.编写Application程序:TestComponent.java
参考教材中例题实现下面的GUI。

2. 编写Application程序:TestChange.java
要求:(1)编写一个窗口,在窗口中有一个画布和三个按钮。

(2)窗口的中间为画布,南边为三个按钮,按钮放在面板上。

(3)按钮的颜色分别为红、绿、蓝。

按钮上标签的名字分别为“红色”,“绿色”,“蓝色”。

(4)单击相应的按钮,在画布上绘制相应颜色的圆。

三、实验要求:
1.参考教材中的例题对界面进行设计;
2. 深刻了解java中的事件处理机制;
3.写出实验报告。

四、实验步骤:
1.界面设计;
2. 事件处理;
3. 编译运行程序,检查正确性;。

8图形界面设计

8图形界面设计

3.2按钮
复选框在Swing组件中使用也非常广泛,它具有一个方块图标,外加一段描述性文字。与单选按钮唯一 不同的是复选框可以进行多选设置,每一个复选框都提供“选择”与“不选择”两种状态。复选框由 JCheckBox类的对象表示,它同样继承于AbstractButton类,所以复选框组件的属性设置也来源于 AbstractButton类。
ቤተ መጻሕፍቲ ባይዱ
3.2按钮
在默认情况下,单选按钮显示一个圆形图标,并且通常在该图标旁放置一些说明性文字,而在应用程序 中,一般将多个单选按钮放置在按钮组中,使这些单选按钮表现出某种功能,当用户选中某个单选按钮 后,按钮组中其他按钮将被自动取消。单选按钮是Swing组件中JRadioButton类的对象,该类是 JToggleButton的子类,而JToggleButton类又是AbstractButton类的子类,所以控制单选按钮的诸多方 法都是AbstractButton类中方法。
5事件处理
在java程序运行时,如果用户进行某个操作,比如单击鼠标键或输入字符,程序应当做出适当响应。用 户在程序界面进行的操作称为用户事件。对事件的响应称为事件处理。
5.1事件处理模型
java中,为了便于管理,系统将事件分类,称为事件类型。系统为每一个事件类型提供了一个侦听程序 接口,它规定了接收并处理该类型事件的方法和规范。为了接收并处理某类用户事件,组件必须注册相 应的事件处理程序,这种事件处理程序称之为事件侦听程序,它是实现了对应侦听程序接口的一个类。 要作为侦听程序对象的类必须实现相应的接口,并实现接口中对应的响应事件的方法。
4.4CardLayout布局管理器
由CardLayout类实现的布局管理器称为卡片布局管理器,用来操纵其所管理容器中包含的容器或组件。 每个直接添加到其所管理容器中的容器或组件为一个卡片,最先被添加到其所管理容器中的容器或组件 被认为是第一个卡片,最后被添加的则为最后一个卡片,初次运行时将显示第一个卡片。

实验8MATLAB图形用户界面设计实验报告

实验8MATLAB图形用户界面设计实验报告

实验报告课程名称:MATLAB 应用实验项目名称:MATLAB 图形用户界面设计 实验时间:11.6班级:XXXXX 姓名:XXXXX 学号:XXX实 验 目 的:1. 熟悉MATLAB 的菜单设计方法2. 熟悉MATLAB 的主要控件使用方法3. 熟悉MATLAB 的GUI 设计流程实 验 环 境:MATLAB 7.1实 验 内 容 及 过 程:简单计算器的设计:在MATLAB GUI 的实验环境中,通过MATLAB 图形用户界面设计的方法,设计一个简单的计算器,以实现简单数据的退出、清屏、删除、四则运算等基本功能。

实 验 过 程、结 果 及 分 析:计算器代码:function varargout = jsq(varargin)gui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...成 绩: 指导教师(签名):'gui_OpeningFcn', @jsq_OpeningFcn, ...'gui_OutputFcn', @jsq_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});elsegui_mainfcn(gui_State, varargin{:});endfunction jsq_OpeningFcn(hObject, eventdata, handles, varargin)guidata(hObject, handles);function varargout = jsq_OutputFcn(hObject, eventdata, handles)varargout{1} = handles.output;function edit1_Callback(hObject, eventdata, handles)function edit1_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction pushbutton19_Callback(hObject, eventdata, handles)close(gcf);function pushbutton17_Callback(hObject, eventdata, handles)set(handles.edit1,'String','0');function pushbutton18_Callback(hObject, eventdata, handles)global a;a=get(handles.edit1,'String');switch acase ' 'b='0';case '0'b=a;otherwiseb=a(1:length(a)-1);endset(handles.edit1,'String',b);guidata(hObject, handles);% --- Executes on button press in pushbutton4.function pushbutton16_Callback(hObject, eventdata, handles)global a;global b;b=strcat(b,strcat(a,'+'));set(handles.edit1,'String','0');function pushbutton15_Callback(hObject, eventdata, handles)global a;global b;b=strcat(b,strcat(a,'-'));set(handles.edit1,'String','0');function pushbutton14_Callback(hObject, eventdata, handles) global a;a=get(handles.edit1,'String');if a=='0';a='9';elsea=strcat(a,'9');%字符串连接endset(handles.edit1,'String',a);guidata(hObject, handles);function pushbutton13_Callback(hObject, eventdata, handles) global a;a=get(handles.edit1,'String');if a=='0';a='8';elsea=strcat(a,'8');%字符串连接endset(handles.edit1,'String',a);guidata(hObject, handles);function pushbutton12_Callback(hObject, eventdata, handles) global a;a=get(handles.edit1,'String');if a=='0';a='7';elsea=strcat(a,'7');%字符串连接endset(handles.edit1,'String',a);guidata(hObject, handles);function pushbutton11_Callback(hObject, eventdata, handles) global a;a=get(handles.edit1,'String');if a=='0';a='4';elsea=strcat(a,'4');%字符串连接endset(handles.edit1,'String',a);guidata(hObject, handles);function pushbutton10_Callback(hObject, eventdata, handles) global a;a=get(handles.edit1,'String');if a=='0';a='5';elsea=strcat(a,'5');%字符串连接endset(handles.edit1,'String',a);guidata(hObject, handles);function pushbutton9_Callback(hObject, eventdata, handles) global a;a=get(handles.edit1,'String');if a=='0';a='6';elsea=strcat(a,'6');%字符串连接endset(handles.edit1,'String',a);guidata(hObject, handles);function pushbutton8_Callback(hObject, eventdata, handles) global a;global b;b=strcat(b,strcat(a,'*'));set(handles.edit1,'String','0');function pushbutton7_Callback(hObject, eventdata, handles) global a;global b;b=strcat(b,strcat(a,'/'));set(handles.edit1,'String','0');function pushbutton6_Callback(hObject, eventdata, handles) global a;a=get(handles.edit1,'String');if a=='0';a='3';elsea=strcat(a,'3');%字符串连接endset(handles.edit1,'String',a);guidata(hObject, handles);function pushbutton5_Callback(hObject, eventdata, handles) global a;if a=='0';a='2';elsea=strcat(a,'2');%字符串连接endset(handles.edit1,'String',a);guidata(hObject, handles);function pushbutton4_Callback(hObject, eventdata, handles) global a;a=get(handles.edit1,'String');if a=='0';a='1';elsea=strcat(a,'1');%字符串连接endset(handles.edit1,'String',a);guidata(hObject, handles);function pushbutton3_Callback(hObject, eventdata, handles) global a;a=get(handles.edit1,'String');if a=='0';a='0';elsea=strcat(a,'0');%字符串连接endset(handles.edit1,'String',a);guidata(hObject, handles);function pushbutton2_Callback(hObject, eventdata, handles) global a;a=get(handles.edit1,'String');b=strfind(a,'.');if numel(b)==0a=strcat(a,'.');elseset(handles.edit1,'String',a);endset(handles.edit1,'String',a);guidata(hObject, handles);function pushbutton1_Callback(hObject, eventdata, handles) global a;global b;c=get(handles.edit1,'String');d=strcat(b,c);a=eval(d);b='0'; %避免出现累加问题a=num2str(a);guidata(hObject, handles);。

matlab的图形用户界面设计3

matlab的图形用户界面设计3

实验八:matlab的图形用户界面设计3
实验要求:
1.熟悉并掌握图形用户界面设计的基本方法和步骤。

2.掌握ActiveX控件在GUI中的应用。

3.掌握常用预定义对话框的用法。

实验内容:
1、使用ActiveX中的圆控件(Mwsamp Control),试编写一m
文件程序,改变这个圆的半径并显示新半径的值。

效果如图1
所示。

2、编写一段程序,实现如下功能:弹出一个文件选择对话框,等待用户选择jpg文件或bmp文件,
然后显示在figure窗口内。

3、编写一个函数文件mywaitbar,在窗口内任意指定位置创建一个进度条,并能设置进度条的进度标好进度。

简单图形用户界面设计

简单图形用户界面设计

和实验八简单图形用户界面设计[实验目的]1.掌握简单的用户界面设计方法。

2.进一步熟悉函数文件的编写技巧[实验原理]图形用户界面(GUI)以其友好和直观性在软件编程上被广泛使用。

WINDOWS 操作系统就是一个经典的图形用户界面操作系统。

图形用户界面是由窗口、光标、按键、菜单、文字说明等对象构成的一个用户界面。

用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如简单的实现计算、绘图等。

MATLAB 以它强大的科学计算及图像生成功能著称,同时它也提供了图形用户界面的设计和开发功能。

即通过MATLAB 的图形用户界面,使得MATLAB 的科学计算功能不仅仅是通过输入一个个的函数代码来实现,还可以通过单击按钮和对话框等直观的图像来表达。

通常如果只是进行简单的数据处理、解方程等计算结果比较单一的工作,一般不用考虑GUI 的制作。

但是如果工作较为繁琐,重复率较高,或者是向别人提供应用程序,想进行某种技术、方法的演示,制作图像用户界面将是一个较好的选择。

MATLAB 的图形用户界面GUI 的制作,即可通过M 脚本文件直接编写,也可通过MATLAB提供的用户图形界面开发工具GUIDE 来实现。

通常我们选择后者,可以开发出界面布局合理、结构较为复杂、功能较多的用户界面。

在MATLAB 命令窗口输入guide,确认后就可以进入到GUI 的开发环境下,如下图所示:图8.1 GUI 开发环境可以看到,MATLAB 的GUI 开发环境和VC、VB 等程序语言的开发环境非常类似。

设计用户交互界面的过程就是把我们需要用到的控件从GUI 开发环境左侧的控件调色板拖到中间的空间布局编辑区,并使用队列工具把这些控件排列整齐合理的过程。

当控件布局好后,可根据需要对每个控件通过各自的对象属性查看器设置其相应的属性,如显示在控件上的文本串、控件的标识符、回调的例程等,最后再根据要求编写相应的例程文件。

图形用户界面—实现学生信息输入窗口

图形用户界面—实现学生信息输入窗口

实验七实验6-2图形用户界面一、实验目的1 设计图形用户界面2 实现用户界面上按钮的功能二、实验内容三、实验步骤代码import java.awt.*;import java.awt.event.*;import javax.swing.*;public class lianxi5 extends WindowAdapterimplements ActionListener,ItemListener//定义事件处理类,由它对按钮和框架上的窗口产生的事件进行处理{Frame f; //框架对象Button b1,b2;TextArea ta;TextField tf;Label l1,l2;List l;JRadioButton rb1,rb2;JComboBox cb;public lianxi5() //构造窗口界面{f = new Frame("学生信息输入窗口"); //创建带标题的框架f.setSize(600,300); //设置框架大小l=new List();l.add("姓名性别专业");f.add(l);Panel p = new Panel();f.add(p,"East");l1=new Label("姓名");tf = new TextField(10);//创建文本输入行对象l2=new Label("性别");rb1=new JRadioButton ("男");rb2=new JRadioButton ("女");String[] a={"计算机","生医"};cb=new JComboBox (a);b1 = new Button("增加"); //创建按钮对象b2= new Button("删除");p.add(l1);p.add(tf);p.add(l2);p.add(rb1);p.add(rb2);p.add(cb);p.add(b1); //在框架中加入按钮p.add(b2);b1.addActionListener(this); //注册,按钮的单击事件由对象自己处理b2.addActionListener( this);rb1.addActionListener(this);rb2.addActionListener(this);cb.addActionListener(this);l.addItemListener(this);f.setVisible(true); //设置框架为可见f.addWindowListener(this); //注册监听框架上的窗口事件}public void actionPerformed(ActionEvent e) //处理按钮单击事件{if(e.getSource()==b1){i f(rb1.isSelected()){l.add(tf.getText()+" "+rb1.getActionCommand()+" "+cb.getSelectedItem());}if(rb2.isSelected()){l.add(tf.getText()+" "+rb2.getActionCommand()+" "+cb.getSelectedItem());}}if(e.getSource()==b2){l.remove(l.getSelectedIndex());}}public void windowClosing(WindowEvent e)// 处理窗口关闭事件{System.exit(0); //程序停止运行,关闭框架窗口}public void itemStateChanged(ItemEvent arg0) {// TODO Auto-generated method stubString str=l.getSelectedItem();int i = str.indexOf(' '); //获得串中第一个空格的位置tf.setText(str.substring(0,i)); //设置文本行显示内容str = str.substring(i); //取从i位置开始的子串str = str.trim();}public static void main(String args[]){new lianxi5();}}四、实验结果贴出运行结果屏幕截图五、实验心得通过看课件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验八图形用户界面(GUI)设计(说明:本次实验在4学时内独立完成)一、实验目的1. 熟悉各种控件和界面菜单的制作。

2. 学会编写控件对象的回调程序(callback函数)。

3. 熟练使用GUI开发工具GUIDE设计用户界面。

二、实验预备知识图形用户界面(Graphical User Interface,简称GUI) 是指由窗口、光标、按键、菜单、文字说明等对象构成的一个人与计算机的交互界面。

用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。

GUI 的最重要组成是用户菜单(uimenu)和用户控件(uicontrol)。

关于界面菜单,可以参考课件相关部分的介绍,这里主要介绍控件的类型、属性和制作方法。

1.用户控件的类型控件是事件响应的图形对象。

当某一事件发生时,应用程序会做出响应并执行某些预定的功能子程序(即回调函数Callback)。

MATLAB中有10种不同类型的控件(下图):①单功能按钮(Push Button);②单选按钮(Radio Button);③双位按钮(Toggle Button);④复选框(Check Box);⑤列表框(List Box);⑥弹出框(Popup Menu);⑦静态文本框(Static Text);⑧可编辑文本框(Edit Text);⑨滑标或滚动条(Slider);⑩框架(Frame)。

这些控件大致可分为两种,一种为动作控件,鼠标点击这些控件时会产生相应的响应;一种为静态控件,是不产生响应的控件,如静态文本框等。

表1给出了各种控件的描述。

2.用户控件的属性每种控件都有一些可以设置的属性参数,用于表现控件的外形、功能及效果。

属性由两部分组成:属性名和属性值,它们必须是成对出现的。

用户可以在创建控件对象时,设定其属性值,未指定时将使用系统缺省值。

下面介绍部分较常用的控件属性:●Tag取值为字符串,定义了控件的标识(标签),在任何程序中都可以通过这个标识控制该控件对象。

●Style表明控件对象的类型,取值为表1所列10种当中之一。

●String定义控件对象的标题或选项内容(即控件上用户想要显示的内容),取值为字符串或数组。

●Units单位属性,取值可以是pixels, normalized(归一化), inches, centimeters或points。

GUI设计时经常使用归一化单位。

表1:各种控件的外形、特征及应用●Position 指明控件的位置。

其值是4元素向量[left bottom width height], 前2个指明控件左下角在其父对象(一般是图形窗)左下角的位置,后两个指明控件的高度和宽度。

这些值的单位由Units属性给出。

●Max 控件的最大值属性,其值为一标量,不同的控件类型有不同的最大值属性。

默认值是1。

对于滑标(滚动条),Max属性值定义了滑标的最大值;对于弹出式菜单,则定义了最大下标值;对于可编辑文本框,当Ma x-Min >1 时,可编辑多行文本。

●Min 控件的最小值属性,其值为一标量,不同的控件类型有不同的最小值属性。

默认值是0。

对于滑标,Min属性值定义了滑标的最小值;对于弹出式菜单,则定义了最小下标值。

●Value控件的当前值属性,其值为一标量或向量,取决于控件类型。

单选按钮以及复选框被选中(on 态)时,其当前值属性Value的属性值应设定为Max属性的值(即该控件类型的最大值);反之未被选中时(off态,默认),则Value属性设定为Min的属性值。

对于滑标,其Value属性值的设置范围是[Min, Max];对于弹出式菜单,把Value 值设置为1时,表示选中第一项,设置2则选中第二项,以此类推,反之,选中第一项,则弹出菜单的value值为1,......;文本对象和功能按钮无此属性。

●Callback回调属性,其值为字符串,可以是某个M文件名或一小段MATLAB语句,当用户激活某个控件对象时,应用程序就运行该属性定义的子程序,使控件产生动作。

后面将重点介绍callback程序的编写。

3.制作用户控件用户控件通过使用命令uicontrol来制作,其使用格式为:H=uicontrol(H_parent,’PN’,PV,…)其中,H是用户控件的句柄,H_parent是其父对象句柄。

PN,PV为(属性名,属性值)二元组,用来定义控件的属性。

例1:h1=uicontrol(gcf,'style','radio','string','斜体', 'units',...'normalized','position',[0.6 0.4 0.1 0.05]);% 用uicontrol指令在当前窗口创建一个单选按钮(radiobutton)set(h1,’Value’,get(h1,’Max’)); % 单选按钮“斜体”默认为选中状态h2=uicontrol(gcf,'style','slider','Max',2.02,'Min',0.02,...'sliderstep',[0.01 0.05],'value',0.5,'units','normalized',...'position',[0.6 0.48 0.2 0.05]);%该语句创建了一个滑标,其中Max和Min属性的值决定了滑标表示的数值的上下限,即[0.02 2.02]。

滑标的sliderstep属性是一个二元数组,第一个元素决定由两端箭头操纵滑动时的步长(微调),本例为0.01×(2.02-0.02);第二个元素决定游标操纵滑动时的步长(粗调),本例为0.05×(2.02-0.02)。

h3=uicontrol(gcf,'style','text','string','当前滑标值=0.5',...'units','normalized','position',[0.6 0.55 0.2 0.04]); %创建文本框set(h2,'callback',['z=get(gcbo,''value'');','set(h3,''string'', [''当前滑标值='',num2str(z)])']);% 在文本框显示滑标当前值;gcbo 返回当前正在执行回调动作的对象(此处是h2)的句柄h_check1=uicontrol(gcf,'style','checkbox','string',...'最大峰值','units','normalized','position',[0.6 0.32 0.2 0.04]);h_check2=uicontrol(gcf,'style','checkbox','string',…'上升时间(0->0.95)','units','normalized','position',...[0.6 0.25 0.2 0.04]);% 创建2个复选框程序运行结果如图所示,若只勾选第一个复选框“最大峰值”,则该控件的当前值value等于最大值Max(=1),第二个复选框的当前值value值则等于最小值Min(=0)。

在命令窗口输入get(h_check1,'value')以及get(h_check2,'value')可以查看到两个复选框的当前值。

5.编写回调函数设置控件之后,要想让控件产生动作,完成用户的意图就需要合理设置控件的回调属性(callback),把能完成用户意图的一条或几条Matlab指令以字符串(i.e.加单引号对)的形式设置为callback的属性值,如例1中:set(h2,'callback',['z=get(gcbo,''value'');','set(h3,''string'', [''当前滑标值='',num2str(z)])']); % 单引号中的双引号代表单引号滑标对象h2的callback属性值(单引号对中的内容)包含下列2条指令z=get(gcbo,'value');set(h3,'string',['当前滑标值=',num2str(z)]);% 用[]构成字串矩阵这两条指令的目的是把滑标选择的数值实时地在文本框h3中显示出来。

第一条指令是获取当前正在执行回调动作的对象(即滑标的移动)的当前值value,第二条指令是把该值作为文本框(h3是其句柄)的显示字串。

注意,这里z是数值,把它显示为字符时,要用num2str 函数先转换成字符型数据。

如果回调属性有较多条Matlab语句,为了提高效率,一般把它们集中写成一个函数M 文件,称之为回调函数(callback函数)。

其一般格式:上例中,如果把回调程序写成M文件,则代码如下:function callslider(h2,h3)z=get(h2,'value');set(h3,'string',['当前滑标值=',num2str(z)]);相应地,callback属性值应改为回调函数名:set(h2,'callback',’callslider(h2,h3)’);该指令将调用回调函数,并把滑标句柄h2和文本框句柄h3传递给回调函数的输入参数。

6.GUI开发环境(GUI Development Environment, GUIDE)MATLAB提供了一套可视化的创建图形用户界面的工具GUIDE,使用GUIDE可方便的创建GUI应用程序,无需用户编写繁琐的控件和菜单的创建程序。

它可以根据用户设计的GUI布局,自动生成M文件的框架,用户使用这一框架编制自己的应用程序。

相关文档
最新文档