实验二 语音交互设计TTS-基于图形用户界面

实验二 语音交互设计TTS-基于图形用户界面
实验二 语音交互设计TTS-基于图形用户界面

COM:即组件对象模型,Component Object Model。

1、在COM构架下,人们可以开发出各种各样的功能专一的组件,组件实际上

是一些小的二进制可执行程序,它们可以给应用程序、操作系统以及其他组

件提供服务,然后将它们按照需要组合起来,构成复杂的应用系统(如dll)。

优点:可用新组件替换原有组件,系统升级和定制更加简便;可在多个应用

系统中重复利用同一个组件;可以方便的将应用系统扩展到网络环境下;

COM与语言、平台无关,程序员可充分发挥自己的才智与专长编写组件模块

等。

2、使用和处理COM对象。COM独立于语言,COM为自己提供对象管理例程。

COM中创建对象,实际是调用COM库中的API函数CoCreatInstance().调用

该函数时,在注册表中查找COM服务器位置,将服务器加载到内存,并创

建所请求的实例。

3、一般使用COM对象的步骤是:

●初始化COM库(Initialize);

●创建一个COM对象,获得相应接口;

●如果对象创建成功,则调用COM对象的某个方法;

●释放接口;

●收回COM库(Uninitialize)

二、TTS—基于图形界面

基于图形用户界面创建一个TTS应用程序,通过对菜单命令的选择执行文本-语音的转换。

一、建立项目

1、创建一个实现典型“Hello world”应用的windows 32平台应用程序项目。

二、设置sapi路径:与SAPI相关的文件路径必须在项目中声明。(sapi.h和sapi.lib)

1、选择“Tools”→“Options”→“Directories”选项卡;

2、选择“Include Files”下拉式选单,增加“sapi.h”的文件路径;

3、选择“Library Files”下拉式选单,增加“sapi.lib”的文件路径;

三、创建“Speak”菜单命令

1、修改自动生成的菜单项。打开“资源管理器”→“File”菜单→增加“Speak”命令项

→资源ID设置为“IDM_SPEAK”。

四、实现speak功能

第1步:初始化COM

第2步:创建语音对象设置声音

第3步:调用speak函数

第4步:设置感兴趣的事件

第5步:确定事件类型

第6步:响应事件

1、初始化COM

if( FAILED( CoInitialize(NULL) ) )

{

return FALSE;

}

2、创建语音对象设置声音

一旦com运行后,下一步就是要创建语音对象。这里需要用到CoCreatInstance().为简洁和方便起见,这个例子使用了特别的处理方式。首先,它使用initinstance ()来初始化声音。这是最简单的初始化过程。第二,这个语音对象是全局性的。第三,语音对象建立之后,对象本省和用到的内存立即被释放。最后,如果初始化失败,应用程序应该有更强有力的检查错误机,更广泛的报告和更详细的资料。

程序清单2:

ISpVoice *pVoice; //SAPI voice(初始化模块)

……

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)

{

。。。。。。

// Instead of using IDC_TEST, use the identifier of menu resource of the current application.

SetMenu(hWnd, LoadMenu(hInstance, MAKEINTRESOURCE(IDC_TEST))); ShowWindow(hWnd, nCmdShow);

UpdateWindow(hWnd);

//Initialize SAPI

HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL,

IID_ISpVoice, (void **)&pVoice);

if( SUCCEEDED( hr ) ) {

pVoice->SetInterest( SPFEI(SPEI_WORD_BOUNDARY),SPFEI(SPEI_WORD_B OUNDARY) );

pVoice->SetNotifyWindowMessage( hWnd, WM_USER, 0, 0 );

}

else

return FALSE;

3、调用Speak函数实现“讲话”的功能

要让计算机讲话只需一句简单的调用命令,要讲话的内容用一个参数传给语音对象,常是从一个对话框或一个文件获取字符串的。另外,字符串也可以从一个流中获取,但就要使用另外一个调用ispvoice::speakstream 。Speak函数的调用代码是放在windows的消息处理函数wndproc ()相应的消息处理中的。从文件菜单选择Speak命令,计算机将开始讲:"我很高兴发言。"

程序代码3:

// FUNCTION: WndProc(HWND, unsigned, WORD, LONG)

。。。。。。

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

。。。。。。

WCHAR tempString[30];

。。。。。。

switch (wmId)

{

。。。。。。

case IDM_SPEAK:

wcscpy( theString, L"I am glad to speak." );

pVoice->Speak( theString, SPF_ASYNC, NULL);

pVoice->Speak(L"I am glad to speak", SPF_ASYNC, NULL);

break;

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

4、设置事件

像其它大部分windows应用程序一样,在COM组件中有很多交互动作,这些交互信息将以信息形式出现。sapi是也一样。信息是在TTS或SR引擎中产生的,某个特定的事件也是在那里开始和结束的.很多时候, sapi或sapi的引擎产生的事件是对应用程序有用的。举例来说,当一个识别过程开始的时候,应用程序会得到相应的通知或消息,最终的用户也可以得到相应的通知。

(1)首先,需要接收一个来自sapi的或sapi的引擎的消息。这个消息是程序自定义的.

但是,所有的活动sapi都使用相同的消息通知应用程序;

(2)得到通知后,应用程序要检查一个事件结构,这个事件结构是由SAPI完成的.利用这

个结构来确定具体是发生了什么事件(见第五步骤).

(3)设定感兴趣的事件。程序可以用setinterest 来设置感兴趣的事件。默认情况下,

TTS不向程序发出任何事件通知。也就是说,如果程序忽略了setinterest的调用,

TTS应用程序是得不到任何事件通知的。

(4)设定消息。不论以何种事件,应用程序都应该将一个消息与sapi联系起来。程序

通过调用setnotifywindowmessage来完成这个任务,本例使用WM_USER消息。程序清单4:

//Initialize SAPI

HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);

if( SUCCEEDED( hr ) )

{

pVoice->SetInterest( SPFEI(SPEI_WORD_BOUNDARY),SPFEI(SPEI_WORD_BOUN DARY) );

pVoice->SetNotifyWindowMessage( hWnd, WM_USER, 0, 0 );

}

else

return FALSE;

5、确定事件。使用事件来工作需要2个步骤。

(1)首先是使用一个简单和标准的做法设置和使用Windows消息。消息是被发送到程序

的消息环中的。在这个例子里,wndproc()接收wm_user讯息。一旦讯息是捕获,其余事情由sapi函数来完成。

(2)第二个步骤是确定哪些消息发生了。Sapi使用spevent和getevents方法来确定具

体的事件和消息。通过这两个函数可以获取指定的事件信息和事件类型。在SPEVENT 的成员eeventid恰恰是setinterest所设定的值。该spevent结构必须在首次使用时被初始化。而且重新使用之前也要被清除。可以使用spclearevent来完成清除工作。

程序清单5:

switch (message)

{

case WM_COMMAND:

wmId = LOWORD(wParam);

wmEvent = HIWORD(wParam);

。。。。。。

case WM_USER: //处理speak命令的窗口

SPEVENT eventItem;

memset( &eventItem, 0,sizeof(SPEVENT));

while( pVoice->GetEvents(1, &eventItem, NULL ) == S_OK )

{

switch(eventItem.eEventId )

{

case SPEI_WORD_BOUNDARY :

SPVOICESTATUS eventStatus;

pVoice->GetStatus( &eventStatus, NULL );

ULONG start, end;

start = eventStatus.ulInputWordPos;

end = eventStatus.ulInputWordLen;

wcsncpy( tempString, theString + start , end );

tempString[ end ] = '/0';

//MessageBoxW( hWnd, tempString, L"GUIApp",

MB_OK|MB_ICONWARNING );

MessageBoxW( hWnd, tempString, L"SayApp",

MB_OK|MB_ICONWARNING );

break;

default:

break;

}

SpClearEvent( &eventItem );

}

break;

。。。。。。

case WM_DESTROY: //释放语音对象

if (pVoice)

{

pVoice->Release();

pVoice = NULL;

}

PostQuitMessage(0);

break;

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

6、响应事件。在这个例子中,应用程序使用spei_word_boundary消息来取定每一个单词。可以用getstatus函数和spvoicestatus结构来获取更详细的信息。一个独立的单词,可以用事件发生时的第一个字母和最后一个字母的位置来确定。在这个例子中,使用MessageBoxW 来显示所讲的单词。在说话过程中,屏幕是实时更新的,并显示实际发言的文字。这个特点是由spf_async标志控制的。如果在Speak函数中使用NULL参数,而不是SPF_ASYNC参数,那样就要等整句话说完之后,才显示消息框。

pVoice->Speak( theString, SPF_ASYNC, NULL);

程序代码6:

case SPEI_WORD_BOUNDARY :

SPVOICESTATUS eventStatus;

pVoice->GetStatus( &eventStatus, NULL );

ULONG start, end;

start = eventStatus.ulInputWordPos;

end = eventStatus.ulInputWordLen;

wcsncpy( tempString, theString + start , end );

tempString[ end ] = '/0';

MessageBoxW( hWnd, tempString, L"GUIApp", MB_OK|MB_ICONWARNING );

break;

总结:

最后,总结一下这个例子的主要知识点:

1,初始化COM:CoInitialize和CoUninitialize

2,建立语音对象实例:CoCreateInstance

3,讲话:Speak

4,设置感兴趣的事件:SetInterest

设定SAPI返回的消息:setnotifywindowmessage

5,消息来时,确定事件类型:GetEvents

清除事件结构:SpClearEvent

6,响应事件时,用GetStatus确定当前SAPI的状态

实验一:图形用户界面设计

实验一图形用户界面设计 一实验目的和要求 1)熟悉图形用户界面的设计原则 遵循用户友好原则、一致性原则、帮助和提示等原则设计用户界面。 2)利用一种设计工具完成图形化的用户界面设计 二实验内容与步骤 (一)实验内容 利用常用的设计工具(UI界面设计工具GUI Design Studio)完成一个通用图形用户界面设计,要遵循界面设计的一般原则(一致性、快捷方式、提供错误处理),注意颜色的使用,学会图标、按钮、屏幕布局、菜单和对话框的设计。 软件的界面如同人的脸一样,软件界面的好坏决定了用户对软件的第一印象。设计好的界面能够引导用户自己完成相应的操作,起到引导作用。设计合理的界面能给用户带来轻松愉悦的感受。一些专家指出:对于用户,人机界面就是系统本身。这充分说明了软件界面设计的重要性。请完成各自的系统用户界面的设计。 (二)实验步骤 1.设计多个对话框,完成填表输入界面的设计,合理使用图标、按钮、颜色; 2.设计不同形式的菜单,完成对不同对话框的调用; 3.提供简单的错误处理、联机帮助。 GUI Design Studio主界面

三界面示例1、登录界面 2、主界面

3、聊天界面 4、QQ空间界面

四实验总结 1.界面要具有一致性、常用操作要有快捷方式、提供简单的错误处理、对操作人员的重要操作要有信息反馈、操作可逆、设计良好的联机帮助、合理划分并高效地使用显示屏、保证信息显示方式与数据输入方式的协调一致。 2.颜色是一种有效的强化手段,同时具有美学价值。使用颜色时应注意如下几点:限制同时显示的颜色数;画面中活动对象的颜色应鲜明,而非活动对象应暗淡;尽量避免不相容的颜色放在一起,如黄与蓝,红与绿等,除非作对比时用;若用颜色表示某种信息或对象属性,要使用户理解这种表示,并尽量采用通用的表示规则。 3.图标是可视地表示实体信息的简洁、抽象的符号。图标设计是方寸艺术,需要在很小的范围内表现出图标的内涵。设计图标时应该着重考虑视觉冲击力,要使用简单的颜色,利用眼镜对色彩和网点的空间混合效果,做出精彩图标。 1)设计按钮应该具有交互性,应该有3到6种状态效果(点击时的状态、鼠标放在上面但未点击的状态、点击前鼠标未放在上面时的状态、点击后鼠标未放在上面时的状态、不能点击时的状态、独立自动变化的状态),按钮应具备简洁的图示效果,应能够让使用者产生功能上的关联反应。属于一个群组的按钮应该风格统一,功能差异大的按钮应该有所区别。 2)设计屏幕布局(Layout)时应该使各功能区重点突出,应遵循如下几条原则:平衡原则、预期原则、经济原则、顺序原则、规则化。 3)菜单在图形界面的应用程序中使用得非常普遍,是软件界面设计的一个重要组成方面,描述了一个软件的大致功能和风格。菜单中的选项在功能上与按钮相当,一般具有下列一种或几种类型的选项:命令项、菜单项和窗口项。菜单的结构一般有单一菜单、线状序列菜单、树状结构菜单、网状结构菜单等,其中树状结构菜单是最常见的结构。 设计菜单界面时应注意一般性原则:功能组织菜单,合理分类,并力求简短,前后一致;合理组织菜单界面的结构与层次;按一定的规则对菜单项进行排序;菜单选项的标题要力求文字简短、含义明确,并且最好以关键词开始;常用选项要设置快捷键;充分利用菜单选项的使能与禁止、可见与隐藏属性;使用弹出式菜单。 4)在处理大量相关数据的场合下,需要输入一系列的数据,这时填表输入界面是最理想的数据输入界面。在设计填表输入界面时应遵循的原则:一致性;有含义的表格标题;使用易于理解的指导性说明文字;栏目按逻辑分组排序;表格的组织结构和用户任务相一致;光标移动方便;出错提示;提供帮助;表格显示应美观、清楚,避免过分拥挤。

实验三图形用户界面设计(汽院含答案)

实验三图形用户界面设计 实验目的 1.掌握Java语言中GUI编程的基本方法 2.掌握Java语言中AWT组件的基本用法 3.掌握Java语言中Swing组件的基本用法 实验导读 1.通过图形用户界面(GUI:Graphics User Interface),用户和程序之间可以方便地进行 交互。 AWT(Abstract Windowing Toolkit),中文译为抽象窗口工具包,是Java提供的用来建立和设置Java的图形用户界面的基本工具。AWT由Java中的包提供,里面包含了许多可用来建立与平台无关的图形用户界面(GUI)的类,这些类又被称为组件(components)。 Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。 JDK写程序所有功能都是靠虚拟机去操作本地操作系统。比如window下,就是JDK 用windows API实现功能。而awt包中很多组件是组件自身去调用本地操作系统代码swing包中的组件采用的是调用本地虚拟机方法,由虚拟机再调用本地操作系统代码。意思就是中间多了一层,这样就加强了swing包的移植性,与本地关系不那强了。 图AWT常用组件继承关系图 Container为容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来。 2.布局,容器中的组件的排放方式。常见的布局管理器: FlowLayout(流式布局管理器):从左到右的顺序排列。Panel默认的布局管理器。 BorderLayout(边界布局管理器):东,南,西,北,中。Frame默认的布局管理器。 GridLayout(网格布局管理器):规则的矩阵

图形用户界面的设计课案

人机交互基础教程 实验报告 实验题目:图形用户界面的设计 专业计算机科学与技术 学生姓名 班级学号 教师 指导单位计算机软件学院 日期

教师 评语教师签名: 年月日 成绩评定 备注

一、实验目的 (1)熟悉图形用户界面的设计原则 (2)利用一种设计工具完成图形化的用户界面设计 二、预备知识 图形用户界面又称为WIMP界面,由窗口(windows)、图标(icons)、菜单(menu)、指点设备(pointing device)四位一体,形成桌面(desktop) ,如图所示。 WIMP界面 用 户 手 眼 击键/指点 窗口、图标 菜单、文本 应用例程 图形用户界面是当前用户界面的主流,广泛应用于各档台式微机和图形工作站。图形用户界面的共同特点是以窗口管理系统为核心,使用键盘和鼠标器作为输入设备。窗口管理系统除了基于可重叠多窗口管理技术外,广泛采用的另一核心技术是事件驱动(event-driven)技术。 WIMP界面可看作是第二代人机界面,是基于图形方式的人机界面。在WIMP界面中,人被称为用户,人机通过对话进行工作。用户只能使用手这一种交互通道输入信息,通过视觉通道获取信息。在WIMP界面中,界面的输出可以为静态或动态的二维图形或图像等信息。

这种方式能同时输出不同种类的信息,用户也可以在几个工作环境中切换而不丢失几个工作之间的联系,通过菜单可以执行控制型和对话型任务。由于引入了图标、按钮和滚动条技术,大大减少键盘输入,提高了交互效率。基于鼠标和图形用户界面的交互技术极大地推动了计算机技术的普及。 (1)图形用户界面的三个重要思想 1)桌面隐喻(desktop metaphor) 指在用户界面中用人们熟悉的桌面上的图例清楚地表示计算机可以处理的能力。隐喻的表现方法:静态图标、动画、视频2)所见即所得(What You See Is What You Get,WYSIWYG) 显示的用户交互行为与应用程序最终产生的结果是一致的。 3)直接操纵(direct manipulation) 直接操纵是指可以把操作的对象、属性、关系显式地表示出来,用光笔、鼠标、触摸屏或数据手套等指点设备直接从屏幕上获取形象化命令与数据的过程。直接操纵的对象是命令、数据或是对数据的某种操作。 (2)设计图形用户界面的原则 1) 一般性原则:界面要具有一致性、常用操作要有快捷方式、提供简单的错误处理、对操作人员的重要操作要有信息反馈、操作可逆、设计良好的联机帮助、合理划分并高效地使用显示屏、保证信息显示方式与数据输入方式的协调一致 2) 颜色的使用:颜色是一种有效的强化手段,同时具有美学价

人机交互界面设计规范

人机交互界面设计规范 (讨论稿) Hygrand 上海华冠电子设备有限责任公司 Hygrand Electronic Equipment CO., LTD.Shanghai

1. 必须在编码之前完成,否则就成花架子了。 2. GUI规范不是一蹴而就,它和设计相互迭代,彼此补充,相互完善。 3. GUI规范的内容70%是通用原则,涉及产品图形控件的基本属性和构建的基本参数和原则,30% 是与项目或产品特点相适应的内容,这部分内容就是在设计过程中迭代产生。 1.概述 <目的、适用项目、基本风格> 2.通用指导原则 2.1.易用性 理想的情况是用户不用查阅帮助就能知道该界面的功能并进行相关的正确操作。如按钮名称应该易懂,用词准确,要与同一界面上的其他按钮易于区分。 <补充易用性细则> 完成同一功能或任务的元素放在集中位置,减少鼠标移动的距离。 复选框和选项框要有默认选项,并支持Tab选择。 …… 2.2.规范性 通常界面设计按Windows界面的规范,即包含“菜单条、工具栏、状态栏、滚动条、右键快捷菜单”等的标准格式,界面遵循规范化的程度越高,则易用性相应的就越好。 <补充规范性细则> 工具栏的图标能直观的代表要完成的操作。 标签提示:字体为加重、宋体、黑色、无边框。 对齐方式:左对齐、一般文字、单个数字、日期等。 等待过程:在需等待时间较短(0-10秒)的情况下应将鼠标显示成为沙漏;当需10秒以上时,要显示进度条等。 菜单深度一般要求最多控制在三层以内。 ……

2.3.美观与协调性 界面应该适合美学观点,感觉协调舒适,能在有效的范围内吸引用户的注意力。 <补充美观与协调性细则> 父窗体或主窗体的中心位置应该在对角线焦点附近。 按钮的大小要与界面的大小和空间要协调。 …… 2.4.独特性 在框架符合以上规范的情况下,设计具有自己独特风格的界面尤为重要。尤其在商业软件流通中有着很好的迁移默化的广告效用。 <补充独特性细则> 安装界面上应有单位介绍或产品介绍,并有自己的图标。 登录界面上要有本产品的标志,同时包含公司图标。 …… 2.5.快捷方式 在菜单及按钮中使用快捷键可以让喜欢使用键盘的用户操作得更快一些,在Windows 及其应用软件中快捷键的使用大多是一致的。 <补充快捷方式细则> 文件操作:如打印、关闭相应的快捷键。 系统菜单:如工具、帮助等的快捷键。 …… 2.6.安全性 在界面上通过下列方式来控制出错几率,会大大减少系统因用户人为的错误引起的破坏。 <补充安全性性细则> 应当注意尽可能避免用户无意录入无效的数据。 采用相关控件限制用户输入值的种类。 ……

图形用户界面设计

09次上机图形用户界面设计 1、(1)给程序添加注释,并执行。 建立数制转换对话框。 在左边输入一个十进制整数和2~16之间的数,单击“转换”按钮能在右边得到十进制数所对应的2~16进制字符串,单击“退出”按钮退出对话框。 hf=figure('Color',[0,1,1],'Position',[100,200,400,200],... 'Name','数制转换','NumberTitle','off','MenuBar','none'); uicontrol(hf,'Style','Text', 'Units','normalized',... 'Position',[0.05,0.8,0.45,0.1],'Horizontal','center',... 'String','输入框','Back',[0,1,1]); uicontrol(hf,'Style','Text','Position',[0.5,0.8,0.45,0.1],... 'Units','normalized','Horizontal','center',... 'String','输出框','Back',[0,1,1]); uicontrol(hf,'Style','Frame','Position',[0.04,0.33,0.45,0.45],... 'Units','normalized','Back',[1,1,0]); uicontrol(hf,'Style','Text','Position',[0.05,0.6,0.25,0.1],... 'Units','normalized','Horizontal','center',... 'String','十进制数','Back',[1,1,0]); uicontrol(hf,'Style','Text','Position',[0.05,0.4,0.25,0.1],... 'Units','normalized','Horizontal','center',... 'String','2~16进制','Back',[1,1,0]); he1=uicontrol(hf,'Style','Edit','Position',[0.25,0.6,0.2,0.1],... 'Units','normalized','Back',[0,1,0]); he2=uicontrol(hf,'Style','Edit','Position',[0.25,0.4,0.2,0.1],... 'Units','normalized','Back',[0,1,0]); uicontrol(hf,'Style','Frame','Position',[0.52,0.33,0.45,0.45],... 'Units','normalized','Back',[1,1,0]); ht=uicontrol(hf,'Style','Text','Position',[0.6,0.5,0.3,0.1],... 'Units','normalized','Horizontal','center','Back',[0,1,0]); COMM=['n=str2num(get(he1,''String''));',... 'b=str2num(get(he2,''String''));',... 'dec=trdec(n,b);','set(ht,''string'',dec);']; uicontrol(hf,'Style','Push','Position',[0.18,0.1,0.2,0.12],... 'String','转换','Units','normalized','Call',COMM); uicontrol(hf,'Style','Push','Position',[0.65,0.1,0.2,0.12],... 'String','退出','Units','normalized','Call','close(hf)'); 2、做一个带按钮的界面,当按动按钮时,在计算机声卡中播放一段音乐。(提示,找一个.wav 文件,简单起见可以在windows目录下找一个文件,将其放在当前工作目录下或搜索路径上,当按动“开始”按钮时调入该文件并播放,发声功能由sound函数完成,具体用法请查阅帮助信息)

图形界面设计实验

图形用户界面编程(设计性实验) 一、实验目的 1、熟悉Swing的基本组件,包括文本输入框、多行文本输入框、按钮、列表框等; 2、熟悉常用的布局管理器 3、了解GUI图像用户界面的设计方法 4、掌握Java组件的事件处理机制 5、熟悉基于内部类和匿名类的事件处理方式 二、实验要求 1、学生应做到独立上机操作 2、编程前应将程序的设计构想完成,主要包括所要创建的类的结构及属性和行为。 3、上机输入和调试自己所编的程序,并存在自己的软盘上。 4、检查实验结果是否正确。 5、上机结束后,写出实验报告,要求附运行界面、源代码。实验报告中应对实验结果进行分析,尤其是针对错误输出的分析。 三、实验内容 1.编写程序,显示一个窗口,窗口中包含一个按钮。当单击按钮时将弹出另一个窗 口。 2. 编写一个简单的计算器程序,实现两个数相加。 在文本框输入两个实数,点击“相加”按钮实现两个实数相加,并在标签中显示相加结果。点击“清除”完成对文本框和运行结果的清除。 四、实验代码及结果: 第一题代码: TestFrame.Java import javax.swing.*; import java.awt.event.*; import java.awt.*; public class TestFrame{ public static void main(String args[]){ JFrame f=new JFrame("Test"); f.setSize(400,200); f.setLayout(new FlowLayout(FlowLayout.CENTER)); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JButton b=new JButton("确定"); b.addActionListener(new ButtonHandler()); f.add(b); f.setVisible(true);} } class ButtonHandler implements ActionListener{ public void actionPerformed(ActionEvent e){ JFrame fr=new JFrame("Hello"); fr.setSize(200,100); fr.setVisible(true);} }

人机界面设计原则

人机界面设计原则 “以人为本” 1.以用户为中心的基本设计原则 在系统的设计过程中,设计人员要抓住用户的特征,发现用户的需求。在系统整个开发过程中要不断征求用户的意见,向用户咨询。系统的设计决策要结合用户的工作和应用环境,必须理解用户对系统的要求。最好的方法就是让真实的用户参与开发,这样开发人员就能正确地了解用户的需求和目标,系统就会更加成功。 2.顺序原则 即按照处理事件顺序、访问查看顺序(如由整体到单项,由大到小,由上层到下层等)与控制工艺流程等设计监控管理和人机对话主界面及其二级界面。 3.功能原则 即按照对象应用环境及场合具体使用功能要求,各种子系统控制类型、不同管理对象的同一界面并行处理要求和多项对话交互的同时性要求等,设计分功能区分多级菜单、分层提示信息和多项对话栏并举的窗口等的人机交互界面,从而使用户易于分辨和掌握交互界面的使用规律和特点,提高其友好性和易操作性。 4.一致性原则 包括色彩的一致,操作区域一致,文字的一致。即一方面界面颜色、形状、字体与国家、国际或行业通用标准相一致。另一方面界面颜色、形状、字体自成一体,不同设备及其相同设计状态的颜色应保持一致。界面细节美工设计的一致性使运行人员看界面时感到舒适,从而不分散他的注意力。对于新运行人员,或紧急情况下处理问题的运行人员来说,一致性还能减少他们的操作失误。 5.频率原则 即按照管理对象的对话交互频率高低设计人机界面的层次顺序和对话窗口莱单的显示位置等,提高监控和访问对话频率。 6.重要性原则 即按照管理对象在控制系统中的重要性和全局性水平,设计人机界面的主次菜单和对话窗口的位置和突显性,从而有助于管理人员把握好控制系统的主次,实施好控制决策的顺序,实现最优调度和管理。 7.面向对象原则 即按照操作人员的身份特征和工作性质,设计与之相适应和友好的人机界面。根据其工作需要,宜以弹出式窗口显示提示、引导和帮助信息,从而提高用户的交互水平和效率。

数字图像处理GUI界面设计.

目录 第一章设计任务及要求 ---------------------------------------------------------------------------------------------------------------- 1 1.1设计依据-------------------------------------------------------------------------------------------------------------------------- 1 1.2课程设计内容 ------------------------------------------------------------------------------------------------------------------- 1 1.3课程设计要求 ------------------------------------------------------------------------------------------------------------------- 1 第二章设计原理-------------------------------------------------------------------------------------------------------------------------- 2 2.1设计题目分析 ------------------------------------------------------------------------------------------------------------------- 2 2.2 设计原理------------------------------------------------------------------------------------------------------------------------- 2 第三章设计实现-------------------------------------------------------------------------------------------------------------------------- 4 3.1 菜单栏编辑---------------------------------------------------------------------------------------------------------------------- 4 3.2 控件及代码的加入 ------------------------------------------------------------------------------------------------------------ 6 3.2.2 控件按钮的创建 ------------------------------------------------------------------------------------------------------ 7 3.2.3 控件代码加入 --------------------------------------------------------------------------------------------------------- 8 3.4 图像灰度处理 ------------------------------------------------------------------------------------------------------------------ 9 3.5 亮度调节------------------------------------------------------------------------------------------------------------------------- 9 3.6 底片处理----------------------------------------------------------------------------------------------------------------------- 11 3.7 直方图均衡化 ---------------------------------------------------------------------------------------------------------------- 12 第四章结果分析及总结 -------------------------------------------------------------------------------------------------------------- 13 第五章参考文献------------------------------------------------------------------------------------------------------------------------ 14 第六章附录 ------------------------------------------------------------------------------------------------------------------------------ 15

实验九Java图形用户界面设计1

实验九Java图形用户界面设计(1) 一实验目的 (1)掌握Frame与面板的使用 (2)布局管理器的使用 (3)布局管理器的使用 (4)边界风格的使用 (5)掌握简单Java事件的处理 二实验内容 1、创建并显示一个标题为“My Frame”,背景色为白色,大小为1000×1000的框架。在该框架中放置八个按钮,按钮的标题分别为“按钮1”、……“按钮8”。采用FlowLayout布局管理器。 程序: import java.awt.*; import javax.swing.*; public class Con1{ private JFrame f; private JButton b1,b2,b3,b4,b5,b6,b7,b8; public static void main(String args[]){ Con1 c=new Con1(); c.go(); } public void go(){

f=new JFrame("My Frame"); Container con=f.getContentPane(); con.setLayout(new FlowLayout()); con.setBackground(Color.white); con.setLayout(new FlowLayout(FlowLayout.RIGHT,920,50)); b1=new JButton("按键1"); b2=new JButton("按键2"); b3=new JButton("按键3"); b4=new JButton("按键4"); b5=new JButton("按键5"); b6=new JButton("按键6"); b7=new JButton("按键7"); b8=new JButton("按键8"); con.add(b1); c on.add(b2); c on.add(b3); c on.add(b4); con.add(b5); c on.add(b6); c on.add(b7); c on.add(b8); f.setSize(1000,1000); f.setVisible(true); } } 结果:

实验6 图形用户界面设计

实验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',...

人机交互UI设计概述

UI设计概述(2008-07-22 10:38:23)转载标签:ui概述流程it 分类:IT UI设计在项目开发过程中工作量最大、最艰苦也是最难以控制的阶段。不管一座大楼的设计蓝图多宏伟,若没有管道工、泥瓦匠、水电工等各种工匠一砖一瓦地艰辛积累,密切协作,这座大楼始终是空中楼阁、海市蜃楼。 一、界面设计 1)深入用户分析 要进行界面开发设计,用户分析是第一步。总所周知,进行任务和用户分析,以及相关调研的必要性和重要性。用户是计算机资源,软件界面信息的使用者,由于目前计算机系统以及相关的信息技术应用范围很广,其用户范围也遍及各个领域。我们必须了解各类用户的习性,技能、知识和经验,以便预测不同类别的用户对界面有什么不同的需要与反应,为交互系统的分析设计提供依据和参考,使设计出的交互系统更适合于各类用户的使用。由于用户具有知识、视听能力、智能、记忆能力、可学习性、动机、受训练程度、以及易遗忘、易出错等特性,使得对用户的分类、分析和设计变得更加复杂化。另外,为了设计友好而又人性化的界面,也必须考虑各类不同类型用户的人文因素。 在软件设计过程中,需求设计角色会确定软件的目标用户,获取最终用户和直接用户的需求。 用户交互要考虑到目标用户的不同引起的交互设计重点的不同。 例如:对于科学用户和对于电脑入门用户的设计重点就不同。 2)设定合理的交互方式 软件界面是人—机之间的信息界面,交互是一个结合计算机科学、美学、心理学、人机工程学等工业和商业领域的行为,其目标是促进设计,执行和优化信息与通信系统以满足用户的需要。 在交互过程中,交互设计关系到用户界面的外观与行为,它不完全受软件的约束。界面设计师以及决定如何与用户进行交互的工程师应该在这一领域深入研究。在界面开发过程中,他们必须贴近用户,或者与用户一道来讨论并得出结果,所以他们的工作是较为辛苦但是最具有意义的。 另一方面,界面与软件代码的生成,代码本身的意义以及功能的实现是紧密联系的。因此编译代码的人同样也应该在这方面做深入的研究。过去,编码人员只是单独地进行软件研发,而缺少必要的美学知识和界面专门技术来处理交互的问题。不幸的是,最终的结果往往不是用户所期望的。对于用户而言,最好的交互方式让程序员去实现往往是最难的,由此矛盾出现了,这使得很多专家或者工程师肤浅地应付一些交互方面的问题。以至于在软件开发完成之后,这些专家和工程师惊讶地发现,用户对他们所实现的特征感到一片茫然,不知所措,通常选用另外一种方式进行交互。不同类型的目标用户有不同的交互习惯。这种习惯的交互方式往往来源于其原有的针对现实的交互流程、已有软件工具的交互流程。 当然还要在此基础上通过调研分析找到用户希望达到的交互效果,并且以流程确认下来。 3)提示和引导用户

《人机交互与界面设计》实践项目

课程设计项目 项目1 Windows软件界面设计(12学时) ⒈目的与要求 在熟练掌握人机界面相关原则和开发方法的基础上,考察对人机界面的设计理念和原则的掌握程度,使学生能够将相关理论和知识应用于实际系统的开发中。通过设计一个简单的Windows软件界面,进一步理解人机界面设计方法及其在实际软件开发过程中的应用。学生应能够较熟练地将相关理论和知识应用于所设计的软件系统中,软件界面符合重要的设计原则。 ⒉任务及说明 使用有关软件工具(推荐使用.NET软件开发工具),设计一个实用性强、界面友好的、简单的Windows软件。选题自由,但需要注意实用性和友好性,能在规定的时间内完成。可选项目包括工具软件、播放器、数据库管理系统等。注重软件的界面设计,要求设计出软件安装界面、主界面及各功能界面。时间充裕的前提下,应尽量完成软件的功能。完成后要提交项目报告和程序源代码文件。 3. 预备知识及准备 掌握有关软件开发工具的使用方法,比如Visual https://www.360docs.net/doc/787875085.html,。理解并掌握人机界面中的重要设计原则,掌握原型开发方法,熟悉Windows图形用户界面的特点、设计原则。 项目2 Web网页界面设计(12学时) ⒈目的与要求 在熟悉人机界面重要的设计原则,特别是网页设计原则,以及开发方法的基

础上,考察对网页界面的设计理念和原则的掌握程度,使学生能够将相关理论和知识应用于实际系统的开发中。通过设计一个简单实用的网站,进一步理解人机界面设计方法及其在实际软件开发过程中的应用。学生应能够较熟练地将相关理论和知识应用于所设计的软件系统中,软件界面符合重要的界面设计原则。 ⒉任务及说明 使用有关软件工具(推荐使用Dreamweaver软件工具),设计一个简单实用的网站。选题自由,但需要注意实用性和友好性,能在规定的时间内完成。网站类型任选,可以是商业网站、娱乐网站、儿童网站、信息网站或门户网站等。所设计的网站要符合网站主题。要注重网页的界面设计,要设计出网站的主界面及各主要功能界面。网页的色彩、布局设计合理,动画、图片使用合理。完成后要提交项目报告和程序源代码文件。 3. 预备知识及准备 掌握有关软件工具的使用方法,比如Dreamweaver。掌握网页设计原则、常见的网页布局、网页中颜色的合理搭配。进一步掌握原型开发方法。在网上或者在生活中搜集素材,做好网站的规划。 项目3 手机软件用户界面设计及项目评估(12学时)⒈目的与要求 在熟练掌握人机界面相关设计原则、开发方法的基础上,能够在实际设计过程中合理地利用所学过的知识。通过设计一个手机软件,加深对人机界面开发方法及其在实际软件开发过程中的应用的理解。学生应能够较熟练地将相关理论和知识应用于所设计的软件中,软件界面符合重要的界面设计原则。 ⒉任务及说明 在某个手机平台上设计一个简单的软件。可选的软件平台如诺基亚的Symbian、谷歌的Android、苹果的iOS、微软的Windows Mobile等。推荐Windows Mobile。开发工具不限,比如Visual https://www.360docs.net/doc/787875085.html,,Java ME等。注意要根据所选择的手机软件平台来确定开发工具,因为不同的平台开发工具不一样。不过几乎所有手机平台都支持Java ME。选题不限,但需要注意实用性和友好性,且能在规定的时间内完成并进行项目评估。可选项目包括工具软件、播放器、游戏软件

图形界面程序的界面设计

实验三图形界面程序的界面设计 一、实验目的 1、掌握Java 图形界面程序设计的基本思想和步骤。 2、掌握JDK 中AWT 包和Swing 包的基本使用方法和区别。 3、掌握容器和布局的概念和使用。 4、掌握图形界面程序的界面设计方法和步骤。 二、实验内容 自己编写所有代码,设计一个程序的界面。该程序的功能要求是:运行之后,界面要求基本如左图所示。其中界面设计时的顶层容器要求使用JFrame(或Frame),界面上的“简易计算器”、“运算数一”、“运算数二”、“运算结果”些提示标签使用组件JLabel(或Label),输入运算数和输出运算结果使用JTextField (或TextField),“相加”、“相减”和“全部清零”使用按钮JButton(或Button)。请注意查阅JDK 的API文档中这些相关的类,看看它们具有哪些构造函数可以用来生成所需的对象,它们具有哪些方法可以用来进行调用。注意保存好本次实验代码,下一次实验将会要求实现其事件处理以继续完善。(由于实验三为选作,因此只做了第一题) 三、分析与设计 1、分析:这次实验主要是图形界面程序的界面设计,设计界面时,先定义“容器对象”作为载体,然后定义按钮,输入框之类的普通图形界面组件对象,把这些组件对象添加(调用容器对象的add方法)到容器上,才构成界面。而对于容器对象设置布局的方法都是调用该容器对象的setLayout方法。 2、设计:此题用到java中能够实现图形用户界面的类库:javax.swing,在根据类库中的组件完成整个界面的设计,其中要注意对于界面的设计有位置等细节需要决定。 四、测试数据及运行结果

进行人机界面设计的研究

进行人机界面设计的研究 1.界面风格的设计控制台人机界面选用非标准Windows风格,以实现用户个性化的要求。但考虑到大多数用户对于标准Windows系统较熟悉,在界面设计中尽量兼容标准Windows界面的特征。界面使用的功能按钮选用MFC类库提供的CBmpButton类动态创建自定义位图图标的按钮。因为位图按钮可在操作中实现高亮度、突起、凹陷等效果,使界面表现形式更灵活,同时可以方便用户对控件的识别。但是,界面里使用的对话框、编辑框、组合框等都选用Windows标准控件,对话框中的按钮也使用标准按钮。控件的大小和间距尽量符合Windows界面推荐值的要求。 界面默认窗体的颜色是亮灰色。因为灰色调在不同的光照条件下容易被识别,且避免了色盲用户在使用窗体时带来的不便。为了区分输入和输出,供用户输入的区域使用白色作为底色,能使用户容易看到这是窗体的活动区域;显示区域设为灰色(或窗体颜色),目的是告诉用户那是不可编辑区域。窗体中所有的控件依据Windows界面设计标准采用左对齐的排列方式。对于不同位置上多组控件,各组也是左对齐排列的。 人机界面的布局设计根据人体工程学的要求应该实现简洁、平衡和风格一致。典型的工控界面分为3部分:标题菜单部分、图形显示区以及按钮部分,如图1所示。该界面界面美观,在屏幕上的对象左右达到平衡、不堆挤在某一处,无杂乱无章的感觉。数据的过分拥挤会产生视觉疲劳和接收错误。界面的平衡原则推荐显示屏幕总体性覆盖度不超过40%,而分组中屏幕覆盖度不超过20%。控制台人机界面中包含着大量的图形显示信息,因此将图形显示区布置在屏幕长宽各占屏幕70%左右的范围内,以保证显示信息的清晰和全面。控制按钮组布置在显示区的右侧,一方面是考虑到绝大多数操作者是右手操作用户,按钮区布置在最右侧更加方便;另一方面是根据界面布局的主次原则,把用户注意力最集中的左上区域留给图形显示区。 根据一致性原则,保证屏幕上所有对象,如窗口、按钮、莱单等风格的一致。各级按钮的大小、凹凸效果和标注字体、字号都保持一致,按钮的颜色和界面底色保持一致。 选择界面的概念取决于多个界面。可将界面设计为循环或FIFO缓冲器。

图形用户界面设计表格组件示例

程序运行结果截图: 程序清单如下: import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Example10_16 { public static void main(String arts []) { Win win = new Win(); } } class Win extends JFrame implements ActionListener { JTable table; Object a[][]; Object name[] = {"商品名称","单价","销售量","销售额"}; JButton computerRows,computerColums; JTextField inputRowsNumber; int initRows = 1; JPanel pSouth,pNorth; int count = 0,rowsNumber = 0; Win() { computerRows = new JButton("每件商品销售额"); computerColums = new JButton("总销售额"); inputRowsNumber = new JTextField(10); computerRows.addActionListener(this); computerColums.addActionListener(this); inputRowsNumber.addActionListener(this); pSouth = new JPanel();

相关文档
最新文档