图形界面设计实验
- 格式:doc
- 大小:71.50 KB
- 文档页数:4
实验四图形用户界面编程实验报告一、实验目的1. 掌握常用组件的定义及使用2. 理解常见的布局方式及其特点3. 掌握事件处理机制二、实验原理1. 常用控件:① JTextField:用于接受文本输入,表现为图形界面中文本框。
② JLabel:标签控件,表现为图形界面中的文字控件。
③ JSplitPane:一个用于把面板分成两个大小可以调整的面板的控件。
④JScrollPane:一个提供滚动支持的面板,当内容超出面板大小时,会自动下按时滚动条。
⑤ JPanel:普通的面板。
可以通过布局管理器来控制面板中控件的布局。
⑥ JButton:按钮控件。
⑦ JPasswordField:用于接受密码的输入,表现为图形界面的密码输入框。
⑧ JList:列表框控件。
2. 每次单击按钮控件时,可以通过addActionListener方法对按钮注册监听,从而实现单击事件的监听。
三、实验内容通过编写一个程序实现上面的界面四、实验过程1. 界面的分析,实验要求中的界面主要分成上下的两部分,界面的下面部分用于显示在上面文本框输入的用户名和密码,而上部分又分成了输入姓名和密码的区域。
而且根据实验的要求,需要把输入的用户名和密码添加到列表框之中,这需要一个按钮。
根据分析,可以得到整个界面控件的关系如下:2. 代码的编写:首先,如果要创建一个窗口,则需要编写一个JFrame的子类。
public class MainFrame extends JFrame {}然后,在类之中声明需要用的控件(需要用的控件在上述已经全部列出)private JSplitPane mainSplitPane = null;private JSplitPane inputSplitPane = null;private JSplitPane topSplitPane = null;private JScrollPane listBoxPane = null;private JPanel buttonPanel = null;private JPanel usernamePanel = null;private JPanel passwordPanel = null;private JButton okButton = null;private JTextField username = null;private JPasswordField password = null;private JList listBox = null;private JLabel usernameLabel = null;private JLabel passwordLabel = null;再然后,编写类的构造方法,对控件进行初始化以及进行相应的布局,同时对JFrame 的一些属性进行调整。
实验11 图形用户界面(GUI)设计一、实验目的●掌握容器、组件的概念;●熟悉常用容器Frame、Panel等的使用;●熟悉常用组件Label、Button、TextField、TextArea、List、Choice、Checkbox等的使用。
●掌握常用布局管理器的使用;●掌握下拉式菜单(一级、二级)的设计——创建菜单条、菜单、菜单项对象,并进行正确的装配;●掌握Font类及Color类二、实验要求●熟练掌握Frame、Panel的用法●熟练掌握常用组件的使用●熟练掌握布局管理器的使用●掌握下拉式菜单的使用三、实验环境●Eclipse IDE或者MyEclipse IDE四、考查知识点1.AWT核心概念:组件、容器和布局管理器组件--Component组件是一个可以以图形化的方式显示在屏幕上并能与用户进行交互的对象,例如一个按钮,一个标签等。
组件不能独立地显示出来,必须将组件放在一定的容器中才可以显示出来,是Java的图形用户界面的最基本组成部分。
容器—Container容器(Container)也是一个类,实际上是Component的子类,因此,容器本身也是一个组件,具有组件的所有性质,但是它的主要功能是容纳其它组件和容器。
布局管理器--LayoutManager布局管理器(LayoutManager):每个容器都有一个布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器。
2.Swing概述Swing是第二代GUI开发工具Swing:又称为轻量级组件,它是Java的改进版本,是第二代GUI开发工具;AWT采用了与特定平台相关的实现,而绝大多数Swing组件却不是,Swing 组件显示不依赖于本地对等组件;Swing是构筑在AWT上层的一组GUI组件的集合,为保证可移植性,它完全用Java语言编写;与AWT相比,Swing提供了更完整的组件,引入了许多新的特性和能力。
图形用户接口一、实验目的·了解嵌入式系统图形界面的基本编程方法·学习图形库的制作二、原理概述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),即可实现清屏。
实验一图形用户界面设计一实验目的和要求1)熟悉图形用户界面的设计原则遵循用户友好原则、一致性原则、帮助和提示等原则设计用户界面。
2)利用一种设计工具完成图形化的用户界面设计二实验内容与步骤(一)实验内容利用常用的设计工具(UI界面设计工具GUI Design Studio)完成一个通用图形用户界面设计,要遵循界面设计的一般原则(一致性、快捷方式、提供错误处理),注意颜色的使用,学会图标、按钮、屏幕布局、菜单和对话框的设计。
软件的界面如同人的脸一样,软件界面的好坏决定了用户对软件的第一印象。
设计好的界面能够引导用户自己完成相应的操作,起到引导作用。
设计合理的界面能给用户带来轻松愉悦的感受。
一些专家指出:对于用户,人机界面就是系统本身。
这充分说明了软件界面设计的重要性。
请完成各自的系统用户界面的设计。
(二)实验步骤1.设计多个对话框,完成填表输入界面的设计,合理使用图标、按钮、颜色;2.设计不同形式的菜单,完成对不同对话框的调用;3.提供简单的错误处理、联机帮助。
GUI Design Studio主界面三界面示例1、登录界面2、主界面3、聊天界面4、QQ空间界面四实验总结1.界面要具有一致性、常用操作要有快捷方式、提供简单的错误处理、对操作人员的重要操作要有信息反馈、操作可逆、设计良好的联机帮助、合理划分并高效地使用显示屏、保证信息显示方式与数据输入方式的协调一致。
2.颜色是一种有效的强化手段,同时具有美学价值。
使用颜色时应注意如下几点:限制同时显示的颜色数;画面中活动对象的颜色应鲜明,而非活动对象应暗淡;尽量避免不相容的颜色放在一起,如黄与蓝,红与绿等,除非作对比时用;若用颜色表示某种信息或对象属性,要使用户理解这种表示,并尽量采用通用的表示规则。
3.图标是可视地表示实体信息的简洁、抽象的符号。
图标设计是方寸艺术,需要在很小的范围内表现出图标的内涵。
设计图标时应该着重考虑视觉冲击力,要使用简单的颜色,利用眼镜对色彩和网点的空间混合效果,做出精彩图标。
实验2. 图形用户界面设计一、实验目的1 熟悉图形用户界面的设计原则2利用一种设计工具完成图形化的用户界面设计二、实验环境1.计算机2.Vs2012三、实验内容用常用的设计工具(VC/VB/Delphi/PB等)完成一个通用图形用户界面设计,要遵循界面设计的一般原则(一致性、快捷方式、提供错误处理),注意颜色的使用,学会使用图标、按钮、屏幕布局、菜单和对话框的设计.四、实验步骤1.设计多个对话框,完成填表输入界面的设计,合理使用图标、按钮、颜色;2.设计不同形式的菜单,完成对不同对话框的调用;3.提供简单的错误处理、联机帮助五、实验程序及结果1.主要程序如下privatevoid button1_Click(object sender, EventArgs e){int j, K = 0;char[] s = newchar[30];string n=textBox2.Text +" "+textBox1.Text;string m;if (textBox1.Text == "" || textBox2.Text == ""){MessageBox.Show("账号,密码不能为空");}FileStream fr = new FileStream("D:\\ONE PIECE\\onepiece.txt",FileMode.Open,FileAccess .Read);for (int i = 0; i < fr.Length; i++){for (j = 0; j < fr.Length; j++){s[j] = (char)fr.ReadByte();if (s[j] == '\\'){break;}}s[j] = '\0';m = newstring(s,0,j);if (m == n){K = 1;break;}Array.Clear(s, 0, s.Length);}if (K == 1){this.DialogResult = DialogResult.OK;this.Close();}elseMessageBox.Show("账号或密码错误!");}privatevoid button2_Click(object sender, EventArgs e){Form3 f3 = new Form3();f3.Show();}publicpartialclass Form3 : Form{public Form3(){InitializeComponent();}privatevoid button1_Click(object sender, EventArgs e){FileInfo fi = new FileInfo("D:\\ONE PIECE\\one piece.txt"); if(!Directory .Exists("D:\\ONE PIECE")){Directory.CreateDirectory("D:\\ONE PIECE");}if (!fi.Exists){fi.Create();}if (textBox2.Text == "" || textBox3.Text == "" || textBox3.Text != textBox4.Text) {MessageBox.Show("注册失败!");this.Close();}else{StreamWriter strw = new StreamWriter("D:\\ONE PIECE\\one piece.txt", true);strw.Write(textBox2.Text + " " + textBox3.Text + "\\");strw.Close();MessageBox.Show("注册成功!");this.Close();}}privatevoid timer1_Tick(object sender, EventArgs e){label1.Text = DateTime.Now.ToString();}2.主要界面图一登陆图二注册图四主界面图五功能显示图六反馈。
实验三图形用户界面设计实验目的1.掌握Java语言中GUI编程的基本方法2.掌握Java语言中AWT组件的基本用法3.掌握Java语言中Swing组件的基本用法实验导读1.通过图形用户界面(GUI:Graphics User Interface),用户和程序之间可以方便地进行交互。
AWT(Abstract Windowing Toolkit),中文译为抽象窗口工具包,是Java提供的用来建立和设置Java的图形用户界面的基本工具。
AWT由Java中的java.awt包提供,里面包含了许多可用来建立与平台无关的图形用户界面(GUI)的类,这些类又被称为组件(components)。
Swing是一个用于开发Java应用程序用户界面的开发工具包。
它以抽象窗口工具包〔AWT〕为基础使跨平台应用程序可以使用任何可插拔的外观风格。
Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。
JDK写程序所有功能都是靠虚拟机去操作本地操作系统。
比方window下,就是JDK用windows API实现功能。
而awt包中很多组件是组件自身去调用本地操作系统代码swing包中的组件采用的是调用本地虚拟机方法,由虚拟机再调用本地操作系统代码。
意思就是中间多了一层,这样就加强了swing包的移植性,与本地关系不那强了。
图3.1 AWT常用组件继承关系图Container为容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来。
2.布局,容器中的组件的排放方式。
常见的布局管理器:FlowLayout〔流式布局管理器〕:从左到右的顺序排列。
Panel默认的布局管理器。
BorderLayout〔边界布局管理器〕:东,南,西,北,中。
Frame默认的布局管理器。
GridLayout〔网格布局管理器〕:规则的矩阵CardLayout〔卡片布局管理器〕:选项卡GridBagLayout〔网格包布局管理器〕:非规则的矩阵3.类JFrame是java.awt.Frame 的扩展版本,该版本添加了对JFC/Swing 组件架构的支持,常用方法如下:1)JFrame() 该构造方法可以创建一个无标题的窗口,窗口的默认布局为BorderLayout布局。
实验6. 图形用户界面设计一、 实验目的1. 掌握图形对象属性的基本操作;2. 掌握菜单及对话框设计、建立控件对象的方法。
二、 实验环境1. 计算机2. matlab7.1三、 实验说明1. 正确操作,认真观察;2. 实验学时:2学时;3. 学会使用help ;4. 保存整理实验结果,提交实验报告。
四、 实验内容1.设计如教材P374 图1所示的菜单,并在此基础上增加选项:可以改变曲线的颜色,可以改变窗口背景颜色。
2.(选做)采用图形用户界面,从键盘输入参数a 、b 、n 的值,考察参数对极坐标曲线)cos(θρn b a +=的影响。
五、 实验程序及结果1. screen=get(0,'ScreenSize');W=screen(3);H=screen(4);figure('Color','w','Position',[0.2*H,0.2*H,0.5*W,0.3*H],...'Name','菜单设计实验','NumberTitle','off','MenuBar','none'); hplot=uimenu(gcf,'Label','&Plot'); %定义plot 菜单项uimenu(hplot,'Label','Sine Wave','Call',...['t=-pi:pi/20:pi;','h0=plot(t,sin(t));',...'set(hlr,''Enable'',''on'');',...'set(hlg,''Enable'',''on'');',...'set(hlb,''Enable'',''on'');']);uimenu(hplot,'Label','Cosine Wave','Call',...['t=-pi:pi/20:pi;','h0=plot(t,cos(t));',...'set(hlr,''Enable'',''on'');',...'set(hlg,''Enable'',''on'');',...'set(hlb,''Enable'',''on'');']);uimenu(hplot,'Label','&Exit','Call','close(gcf)');hc=uimenu(gcf,'Label','&Color'); %定义Color菜单项hw=uimenu(hc,'Label','&Window Color');uimenu(hw,'Label','&Red','Call','set(gcf,''Color'',''r'');');uimenu(hw,'Label','&Green','Call','set(gcf,''Color'',''g'');');uimenu(hw,'Label','&Blue','Call','set(gcf,''Color'',''b'');');hl=uimenu(hc,'Label','&Line Color','Separator','on');hlr=uimenu(hl,'Label','&Red','Call',...'set(h0,''Color'',''r'');','Enable','off');hlg=uimenu(hl,'Label','&Green','Call',...'set(h0,''Color'',''g'');','Enable','off');hlb=uimenu(hl,'Label','&Blue','Call',...'set(h0,''Color'',''b'');','Enable','off');2. hf=figure('menubar','none','name','图形演示',...'numbertitle','off'); %定义图形窗口set(gcf,'unit','normalized','posi',[0.2,0.3,0.55,0.36]);axes('posi',[0.05,0.15,0.55,0.7]); %定义坐标轴uicontrol(gcf,'style','text','unit','normalized',... %定义静态文本'posi',[0.63,0.85,0.1,0.1],'string','参数 a',...'horizontal','center');uicontrol(gcf,'style','text','unit','normalized',...'posi',[0.63,0.65,0.1,0.1],'string','参数 b',...'horizontal','center');uicontrol(gcf,'style','text','unit','normalized',...'posi',[0.63,0.45,0.1,0.1],'string','参数 n',...'horizontal','center');ha=uicontrol(gcf,'style','edit','back','w',... %定义编辑框'unit','normalized', 'posi',[0.80,0.85,0.15,0.1]);hb=uicontrol(gcf,'style','edit','back','w',...'unit','normalized','posi',[0.80,0.65,0.15,0.1]);hn=uicontrol(gcf,'style','edit','back','w',...'unit','normalized','posi',[0.80,0.45,0.15,0.1]);uicontrol(gcf,'style','push','unit','normalized',... %定义按钮'posi',[0.61,0.15,0.15,0.15],'string','绘图','call',COMM); uicontrol(gcf,'style','push','unit','normalized',...'posi',[0.80,0.15,0.15,0.15],'string','关闭','call','close(gcf)');COMM=['a=str2num(get(ha,''string''));',... %绘图'b=str2num(get(hb,''string''));',...'n=str2num(get(hn,''string''));',...'theta=0:0.01:2*pi;',...'rho=a*cos(b+n*theta);',...'polar(theta,rho);'];改变参数a,如图所示改变参数b,如图所示改变参数n,如图所示。
实验6. 图形用户界面设计一、 实验目的1. 掌握图形对象属性的基本操作;2. 掌握菜单及对话框设计、建立控件对象的方法。
二、 实验环境1. 计算机;2. Matlab 软件。
三、 实验说明1. 正确操作,认真观察;2. 实验学时:2学时;3. 学会使用help ;4. 保存整理实验结果,提交实验报告。
四、 实验内容1.设计如教材P374 图1所示的菜单,并在此基础上增加选项:可以改变曲线的颜色、线型;可以改变窗口背景颜色。
2.(选做)采用图形用户界面,从键盘输入参数a 、b 、n 的值,考察参数对极坐标曲线)cos(θρn b a +=的影响。
五、 实验程序及结果screen=get(0,'ScreenSize');W=screen(3);H=screen(4);figure('Color',[1,1,1],'Position',[0.2*H,0.2*H,0.5*W,0.3*H],...'Name','菜单设计实验','NumberTitle','off','MenuBar','none'); %定义Plot 选项hplot=uimenu(gcf,'Label','&Plot');uimenu(hplot,'Label','Sine Wave','Call',...['t=-pi:pi/20:pi;','hl=plot(t,sin(t));','set(hl,''UIContextMenu'',hc);']);uimenu(hplot,'Label','Cosine Wave','Call',...['t=-pi:pi/20:pi;','hl=plot(t,cos(t));','set(hl,''UIContextMenu'',hc);'] );uimenu(hplot,'Label','Exit','Call','close(gcf)');hoption=uimenu(gcf,'Label','&Option');%定义Window Color选项hwincor=uimenu(hoption,'label','&Window Color');uimenu(hwincor,'Label','&Red','Accelerator',...'r','Call','set(gcf,''Color'',''r'');');uimenu(hwincor,'Label','&Blue','Accelerator',...'b','Call','set(gcf,''Color'',''b'');');uimenu(hwincor,'Label','&Yellow','Call',...'set(gcf,''Color'',''y'');');uimenu(hwincor,'Label','&White','Call',...'set(gcf,''Color'',''w'');');%定义Line Color选项hlinecolor=uimenu(hoption,'Label','&Line Color');uimenu(hlinecolor,'Label','&Red','Accelerator',...'r','Call','set(hl,''Color'',''r'');');uimenu(hlinecolor,'Label','&Blue','Accelerator',...'b','Call','set(hl,''Color'',''b'');');uimenu(hlinecolor,'Label','&Yellow','Call','set(hl,''Color'',''y'');'); uimenu(hlinecolor,'Label','&White','Call','set(hl,''Color'',''w'');'); hl=plot(t,sin(t));hc=uicontextmenu;hlinefigure=uimenu(hoption,'Label','&Line figure');uimenu(hlinefigure,'Label','虚线','Call','set(hl,''LineStyle'','':'');');uimenu(hlinefigure,'Label','加宽','Call','set(hl,''LineStyle'',''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取值为字符串,定义了控件的标识(标签),在任何程序中都可以通过这个标识控制该控件对象。
实验6. 图形界面设计6.1思考题1 一个部件会在水平方向会改变大小,但垂直方向不变,应放到什么位置?C A.BorderLayout 布局的或位置B.FlowLyout布局的第一个部件(水平垂直都不发生变化)C. BorderLayout布局的East或West位置D. BorderLayout布局的Center位置E.GridLayout布局中(网格布局,水平垂直都会发生改变)2 以下AWT类中哪些实现部件的布局?ABEyoutManagerB.GridBagLayoutC.ActionListenerD.WindowAdapterE. FlowLayout3. 设有以下程序:Cimport java.awt.*;public class FlowAp extends Frame{public static void main(String argv[]){FlowAp fa=new FlowAp( );fa.setSize(400,300);fa.setVisible(true);}FlowAp( ){add(new Button(〝One〞));add(new Button(〝Two〞));add(new Button(〝Three〞));add(new Button(〝Four〞));}}以下哪个描绘了应用的外观?A.窗体每边有4个标记为One到Four的按钮B.从顶到底安排有4个标记为One到Four的按钮在正中央C.一个很大的标记为Four的按钮在正中央D.运行时指示没有设置布局管理器的错误4如何设置当前的布局管理器?BA.使用setLayout方法B.一旦创建了部件,不能改变部件的布局管理器C.使用setLayoutManager方法D.使用updateLayout方法5以下代码运行后外观为?Aimport java.awt.*;public class CompLay extends Frame{public static void main(String argv[]){CompLay c1=new CompLay( );}CompLay( ){Panel p= new Panel( );p.setBackground(Color.pink);p.add(new Button(〝One〞));p.add(new Button(〝Two〞));p.add(new Button(〝Three〞));add (〝South〞.p);setLayout(new FlowLayout());setSize(300,300);setVisible(true);}}A.按钮按从左到右的次序出现在窗体的底部B.按钮按从左到右的次序出现在窗体的顶部C.按钮将不显示D.只有一个按钮显示占满整个窗体6 以下程序调试结果为?B//演示事件处理import java.awt.*;import java.awt.event.*;public class MyWc extends Frame implements WindowListener{ public static void main(String argv[]){MyWc mwc=new MyWc( );}public void windowClosing(WindowEvent we){System.exit( 0 );}public MyWc(){setSize(300,300);setVisible(true);}}A.编译错误B.创建的窗体会关闭掉C.运行无输出D.编译错误,import语句不能有注释语句7 以下叙述正确的有?A.如果一个部件注册多个监听者,事件将只会被最后一个监听者处理。
实验二图形用户界面设计与应用一、实验目的1、了解GUI 的基本控件2、掌握通过GUIDE 创建GUI 的方法3、掌握通过程序创建GUI 的方法二、实验仪器1、计算机2、MATLAB 软件环境三、实验指导1. 通过GUIDE 创建GUI本例GUI 的功能为在一个界面中绘制两个图形,为的图像及其快速傅立叶(FFT)的图像。
其中参数、和的值由界面输入。
该GUI 的界面图形如图:该GUI 中需要解决的问题有:a.控制绘图命令的目标坐标系;b.通过文本编辑器输入MATLAB 表达式的参数。
创建GUI 界面打开GUIDE,新建GUI,保存为two_axes。
向其中添加控件并设置这些控件的属性。
设置f1 的Tag 属性为f1_input,初始值为50,f2 的Tag 属性为f2_input,的初始值为120,t 的Tag 属性为t_input,的初始值为0:.001:0.25。
这些初始值为打开该GUI 时的默认值。
由于该GUI 中包含两个图形,在绘制图形时必须指定坐标系。
为实现这一功能,可以使用handles 结构体,该结构体中包含GUI 中所有控件的句柄。
该结构体中的域名为控件的Tag 属性值。
在本GUI 中,我们设置绘制函数时域的坐标系的句柄为time_axes,绘制频域图形的坐标系为frequency_axes,如图所示。
设置后,在响应函数中,可以通过handles.frequency_axes 实现对该坐标系的调用。
设置控件完成后,设置GUI 的属性。
在Tools 菜单中选择GUI options…,弹出窗口如图所示。
该GUI 需要从界面中读入参数,利用读入的参数计算函数的快速傅立叶变换,之后绘制图形。
需要的响应函数只有一个,即按钮的响应函数。
该函数的内容为:function plot_button_Callback(hObject, eventdata, handles)% hObject handle to plot_button (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Get user input from GUIf1 = str2double(get(handles.f1_input,'String'));f2 = str2double(get(handles.f2_input,'String'));t = eval(get(handles.t_input,'String'));% Calculate datax = sin(2*pi*f1*t) + sin(2*pi*f2*t);y = fft(x,512);m = y.*conj(y)/512;f = 1000*(0:256)/512;% Create frequency plotaxes(handles.frequency_axes) % Select the proper axesplot(f,m(1:257))set(handles.frequency_axes,'XMinorTick','on')grid on% Create time plotaxes(handles.time_axes) % Select the proper axesplot(t,x)set(handles.time_axes,'XMinorTick','on')grid on代码完成后保存,运行该GUI,得到结果如图:2. 通过程序创建GUI1)需要实现的功能及需要包含的控件要创建的GUI 其功能为在坐标系内绘制用户选定的数据,包含的控件包括:坐标系;弹出菜单,其中包含五个绘图选项;按钮,更新坐标系中的内容;菜单栏,其中包含File 菜单,菜单中包含三个选项,为Open、Print 和Close;工具栏,包含两个按钮,为Open 和Print。
实验四图形用户界面设计一、实验目的1、了解图形用户界面的基本组件、窗口、按钮、文本框、选择框、滚动条等的使用方法。
2、了解如何使用布局管理器对组件进行管理。
3、掌握如何使用Java 的事件处理机制。
二、实验要求1、能够编写图形用户界面,使用最基本的Swing组件(JFrame、JTextField、JTextArea、JLabel、JPanel、JButton、JOptionPane)。
2、能够针对具体界面分析其布局。
3、为界面添加事件处理。
三、实验内容1、复习课堂上及书上的例子。
2、分析图1所示界面的布局,生成同样的界面。
(考点:布局管理器)图1 布局管理器的嵌套3、生成一个登录界面,如图2所示。
(考点:界面设计+事件处理)实验要求:1)密码框的回显字符设为’*’;2)当用户输入的用户名与密码均为“admin”时,点“确定”按钮后程序正常退出(利用System.exit(int)语句);3)当用户输入的用户名与密码不同为“admin”时,点“确定”按钮后弹出如图3所示的消息框;4)若点击“重置”按钮,可将文本框和密码框同时清空。
实验提示:1)密码框为java.awt.JPasswordField类对象public void setEchoChar(char c)设置此 JPasswordField 的回显字符。
public char[]getPassword()返回此 TextComponent 中所包含的文本。
2)ng.System类public static void exit(int status)终止当前正在运行的 Java 虚拟机。
参数用作状态码;根据惯例,非 0 的状态码表示异常终止。
3)对于“确定”按钮有两种处理方式,分别对应于正确与错误的用户名密码对。
4)java.awt.event.ActionEvent类public String getActionCommand()返回与此动作相关的命令字符串。
实验二图形用户界面设计一、实验目的通过编程和上机实验,了解图形用户界面基本组件窗口、按钮、文本框、选择框等的使用方法,了解如何使用布局管理器对组件进行管理,以及如何使用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 Button[str.length]; // 创建按钮数组for(int i=0;i<str.length;i++){btn[i]=new Button(str[i]); frame.add(btn[i]);}frame.setVisible(true); }}3 编程实现简单的标签、按钮组件,实现点击按钮,改变标签的功能。
实验三图形界面程序的界面设计一、实验目的1、掌握Java图形界面程序设计的基本思想和步骤。
2、掌握JDK中A WT包和Swing包的基本使用方法和区别。
3、掌握容器和布局的概念和使用。
4、掌握图形界面程序的界面设计方法和步骤。
二、实验内容自己编写所有代码,设计一个程序的界面。
其中界面设计时的顶层容器要求使用JFrame(或Frame),界面上的“简易计算器”、“运算数一”、“运算数二”、“运算结果”这些提示标签使用组件JLable(或Lable),输入运算数和输出运算数结果使用JTextField(TextField),“相加”、“相减”和“全部清零”使用按钮JButton(或Button)。
请注意查阅JDK的API文档中这些相关的类,看看它们具有哪些构造函数可以用来生成所需的对象,它们具有哪些方法用来进行调用。
注意保存好本次实验代码,下一次实验将会要求实现其事件处理以继承完善。
四、分析设计过程首先,利用建立一个JFrame容器,设计容器的大小,并且用setVisible(true)设为可视,定义界面上的“简易计算器”、“运算数一”、“运算数二”、“运算结果”的标签,并且定义“相加”、“相减”和“全部清零”使用按钮,并且要用setSize()和setLocation()排布好这些按钮以及标签的位置,并且一定要用要用add()方法把这些标签和按钮添加到容器中。
这样子就行了。
五、测试数据和程序运行的结果六、问题与总结整个逻辑思路并不困难,因为只要是懂得Frame容器的定义,JButton,Label等些知识,而老师在例子中给了很多相似的例子,就比较容易。
在我做这个实验的时候,遇到比较困难的地方就是,给标签、按钮的排布,之前一直不是这个按钮不见就是这个标签看不到,而具体的原因是我不懂得各个标签、按钮的比例。
导致,很多东西都无法在界面上显示出来。
七、附录import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class Jiemian extends JFrame implements ActionListener{JFrame jfr=new JFrame("Basic Application");//定义一个Frame容器的对象jfrLabel l1=new Label("简易计算器");//定义各个标签Label l2=new Label("运算数一");Label l3=new Label("运算数二");Label l4=new Label("运算结果");JTextField tf1=new JTextField(15);//定义各个JTextField类型的组件,并生成对象实例JTextField tf2=new JTextField(15);JTextField tf3=new JTextField(15);JButton b1=new JButton("相加");//定义各个按钮JButton b2=new JButton("相减");JButton b3=new JButton("全部清零");public Jiemian(){j fr.setSize(260,350);//设计界面的大小jfr.setLayout(null);//设计为null布局l1.setSize(90,30);//设计11的宽度和高度l1.setLocation(80,20);//设计11在界面上左上角的位置坐标l2.setSize(60,30);l2.setLocation(30,70);l3.setSize(60,30);l3.setLocation(30,120);l4.setSize(60,30);l4.setLocation(30,170);tf1.setSize(100,30);tf1.setLocation(120,70);tf2.setSize(100,30);tf2.setLocation(120,120);tf3.setSize(100,30);tf3.setLocation(120,170);b1.setSize(60,30);b1.setLocation(50,220);b2.setSize(60,30);b2.setLocation(140,220);b3.setSize(100,30);b3.setLocation(80,270);jfr.add(l1);//添加到容器上jfr.add(l2);jfr.add(l3);jfr.add(l4);jfr.add(tf1);jfr.add(tf2);jfr.add(tf3);jfr.add(b1);jfr.add(b2);jfr.add(b3);jfr.setLocation(500,150);jfr.setVisible(true);}public static void main(String args[]) { Jiemian ja=new Jiemian();}}。
广州大学学生实验报告开课学院及实验室:计算机科学与工程实验室2014年11月14日一、实验目的实验十图形用户界面(1)1.了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法,·2.了解如何使用布局管理器对组件进行管理,以及如何使用Java 的事件处理机制。
实验十一图形用户界面(2)1.了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法,2.了解如何使用布局管理器对组件进行管理,以及如何使用Java 的事件处理机制。
二、实验器材MacBook Pro一台操作系统:OS X Yosemite\编程软件:eclipse三、实验要求实验十图形用户界面(1)1. 理解Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。
2. 掌握编写独立运行的窗口界面的方法。
3. 了解Java Swing 组件的使用方法。
4. 了解对话框的使用方法。
实验十一图形用户界面(2)¥1. 理解Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。
2. 掌握编写独立运行的窗口界面的方法。
3. 了解Java Swing 组件的使用方法。
4. 了解对话框的使用方法。
四、实验过程原始数据记录实验十图形用户界面(1)…1. 如下图所示,用了三个文本框,第一个文本框给用户输入商品单价,第二个则是给用户输入商品数量,第三个用于显示总金额。
代码:import class test_2_1_1 extends JFrame implementsActionListener{public static void main(String[] args) {ddDocumentListener(new DocumentListener() {"@Overridepublic void removeUpdate(DocumentEvent e) {ddDocumentListener(new DocumentListener() {@Overridepublic void removeUpdate(DocumentEvent e){quals("计算")){?if (!canCal){showMessage("输入的数据不合法");return;}double sum = ()) *());(sum));#}}制作如下图所示的界面,当用户点击单选按钮时,会在一个标签上显示出当前所选定的数据库服务器类型。
实验报告课程名称: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);。