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

实习报告课程名称多媒体实验实习题目图形图像用户界面设计专业通信工程班级通信(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 (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图形用户界面实验报告

西安邮电大学(计算机学院)课内实验报告实验名称:图形用户界面专业名称:计算机科学与技术班级:计科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

目录
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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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文件的框架,用户使用这一框架编制自己的应用程序。