当前位置:文档之家› 基于Java的图形用户界面设计

基于Java的图形用户界面设计

基于Java的图形用户界面设计
基于Java的图形用户界面设计

目录

一引言 (1)

二图形用户界面 (1)

(一)注重图形用户界面的设计 (1)

(二)出色的图形用户界面设计 (2)

1.为用户设计 (2)

2.清楚一致的设计 (2)

3.注意美学因素 (2)

4.细节辅助 (2)

三Java Swing简介 (2)

(一)Swing的特性 (3)

1.可插拔外观风格 (3)

2.轻型组件 (3)

3.如何使用Swing (3)

(二)Swing程序包和类 (4)

(三)MVC体系结构 (5)

1.模型 (5)

2.视图 (5)

3.控制器 (5)

四图像浏览器的设计与实现 (6)

(一)需求分析 (6)

1.功能需求 (6)

2.环境配置 (7)

(二)界面结构设计 (7)

(三)组件的选用 (7)

(四)主要模块功能及实现 (9)

1. JImageViewer (9)

2. JImageFrame (9)

3. TreeExplorer (10)

4. JFancyButton (10)

5. LnFListener (10)

五程序运行情况说明 (10)

六小结 (11)

致谢 (12)

参考文献 (12)

附录 (12)

基于Java的图形用户界面设计

摘要本文讨论了基于Java的图形用户界面设计。对图形用户界面、Swing作了简单的

介绍,给出了一个图像浏览器用Java语言实现的详细设计过程。在这个图像浏览器中,使用到了Java开发工具包中的Swing库中的一些常用的标准或经扩展了的图形界面元素和处理图形界面的各种事件。运行和程序测试结果表明:这个浏览器运行良好,能打开gif、jpg、png格式的文件,完成前一张、后一张、放大、缩小等常用操作。

关键词Java Swing图形用户界面软件设计

一引言

设计和构造用户界面,是软件开发中的一项重要工作。用户界面是计算机的使用者-用户与计算机系统交互的接口,用户界面功能是否完善,使用是否方便,将直接影响到用户对应用软件的使用。图形用户界面(Graphics User Interface)简称GUI,使用图形的方式,帮助用户方便地向计算机系统发出命令,启动操作,并将系统运行的结果同样以图形的方式显示给用户。图形用户界面画面生动、操作简便,省去了字符界面用户必须记忆各种命令的麻烦,深受广大用户的喜爱和欢迎,已经成为目前几乎所有应用软件的既成标准。所以,学习设计和开发图形用户界面,是应用软件开发人员必修的一课[1]。

Java语言中,为了方便图形用户界面的开发,设计了专门的java.awt类库来生成各种标准图形界面元素和处理图形界面的各种事件。但是AWT的功能还不是很完全,Java程序的图形用户界面在不同的平台上(例如,在不同的浏览器中)可能会出现不同的运行效果,如窗口大小、字体效果将发生变化等[1]。

Swing是Sun Microsystems 建立的下一代GUI工具包,它包含比AWT更多的图形组件。Swing支持任意数量嵌套边框的镶边替代物,支持工具提示,可以任意地将键盘事件绑定到组件中,并且Swing中存在支持用来绘制自定义轻型组件的附加调试操作。除了新的组件之外,Swing还对AWT做出了三个主要改进[2],它们是轻型组件、可插拔的外观风格和采用MVC模式,这使得Swing在GUI的设计上表现更为灵活。

因此,鉴于学习设计和开发图形用户界面的重要性,和Java中Swing组件在表现图形

界面上的优势,在这个课题中,我们选用Swing 包中的J组件实现了一个图像浏览器。

二图形用户界面

图形用户界面(GUI)已成为用户界面的首选。而图形用户界面的设计则成为一般的软件开发中必不可少并且重要的工作。那么,好的图形用户界面能带来怎样的好处呢?怎样的界面才是出色的呢?下面,我们就来对这两方面作一个简单的介绍。

(一)注重图形用户界面的设计

用户界面是用户与系统间的桥梁,界面设计的好坏,直接影响用户对软件的使用和评价。也许一个软件具有很强大的功能,但如果其界面不能使用户与系统间有良好、通畅的沟通,那么那些强大的功能也很难较好地发挥它的效用。而一个具有良好界面的软件更容易被用户

所接受、所欢迎。一个连贯的具有清晰的视觉表达效果的图形界面(GUI),不仅能给用户带

来正面的情绪反应,甚至能在一定程度上帮助用户去发现和理解软件的功能,戏剧般地提高其可用性。我们都希望设计出功能很好的软件以满足用户需求,那么,为了让它能更方便地被使用,迎得更多的用户去使用自己的产品,我们有什么理由不在用户界面上下功夫呢?(二)出色的图形用户界面设计

成功的GUI设计具有很多共同的特征。最重要的是,好的图形用户界面是凭直觉去使用的,直觉对于有目的的用户意味着容易理解。那种界面一目了然,清晰以致于“透明”,因为界面不干涉它们本该完成的任务。做到这点并不容易,这种界面用起来方便,设计起来却很困难。需要在很多方面花时间和精力。

1.为用户设计

设计者不是用户,他需要设计出自己的界面来迎合用户的期望和精神模式,所以弄清楚谁是自己的用户是非常重要的。例如,通过对用户的了解,可以知道用户最常用的操作是哪些,就把它们安排在界面上显眼的位置,不是很常用的可以隐含的深一点。又如一个图标设计成何种形象,才会使用户一看便知那是什么功能。

2.清楚一致的设计

除了同一软件各模块中的术语、风格表达一致外,应该在程序中实现同用户以前使用过的其它成功软件一致的动作。如一般软件中的剪切功能以“剪刀”形象标明,“ctrl+X”为快捷键,自己设计时就不要弄成“锤子”和“Ctrl+T”。

3.注意美学因素

开发一个图形化的用户界面组件意味着你必须掌握对视觉效果和情感响应的表达。在界面的色彩、布局和图标的精致等方面要有所考究。

4.细节辅助

①提供可视反馈。

作为最一般的规则,当一个操作超过7~10秒的时候(时间的长短要根据用户类型和应用程序的特点来调整),大多数用户希望看到一个带有进度条的消息对话框。

②提供声音反馈。

尤其是在需要警告用户一个严重问题产生的地方,声音反馈是有用的。但同时也应该允许用户取消声音反馈,除非错误不得不通知。

③提供键盘支持。

加速键可以给用户提供一种非常有效的操作方式来访问窗口中的指定菜单项和控

件。加速键应该易于使用并限制在一到两个键(如F3或者Ctrl+P)。

三Java Swing简介

浏览Java的主页(https://www.doczj.com/doc/a87307548.html,/)时,可以找到对Swing的说明,它被描述成一组可定制的图形组件,可以在运行时指定这些组件的外观风格。不过,Swing实际上不只这些,它允许使用Java语言进行企业级开发。程序员可以使用Swing建立包含许多功能强大的组

件的大型Java应用程序,并且可以更容易地扩充或者修改这些组件以控制它们的外观和行为。那么,为了能较好地发挥Swing的优势来为自己的Java 应用程序增色,首先就要对Swing 有一个总体的认识。

(一)Swing的特性

1.可插拔外观风格

Swing类最让人激动的一个方面是能够规定每个组件的外观风格,甚至可以在运行时重新设置外观风格。这种特性叫做“可插拔外观风格”(Pluggable Look-and-Feel,或简称PLAF)。Swing能够模拟几种外观风格,并且它目前支持Windows、Unix Motif和“本地”Java Metal 外观风格。此外,Swing允许用户在运行时转换外观风格,而不必关闭应用程序。这样,用户可以进行实验,通过即时反馈来查看哪一个外观风格是自己最喜欢的。并且,用户甚至可以为每一个Swing组件建立自己的外观风格。

2.轻型组件

绝大多数Swing组件都是轻型的。在最完美的情况下,这意味着这些组件并不依赖本地对等组件来绘制自己。相反,它们使用简化的图形基本元素在屏幕上描绘自己,甚至允许部分图像是透明的。只有少数顶层容器不是轻型的(如JFrame和JWindow)。这个设计允许程序设计人员在运行时绘制(和重新绘制)自己的应用程序的外观风格,而不是对主机操作系统的外观风格进行这样的尝试。此外,Swing组件的设计支持对组件行为进行随意修改。例如,可以告诉几乎所有的Swing组件用户是希望接受输入焦点还是希望拒绝输入焦点,可以告诉它应该如何处理键盘输入。

3.如何使用Swing

不是人人都为了同一个原因而使用Swing。实际上,因为有着各种级别的必须预先具备的知识,所以Swing库有许多使用级别。以下是一些可能的用途:

①在打算建立自己的企业级应用程序时使用Swing组件。

第一种方法是大多数Swing组件所使用的方法。在这时,使用Swing组件类似于使用AWT组件。常见的组件、容器和布局管理器都可以从Swing程序包中获得,它们有助于建立并快速运行应用程序。如果擅长使用AWT组件进行编程,只需要浏览对每个组件的粗略介绍,就可以开始使用了。只有在使用一些更大并且更新的组件(如表和文本),或者打算将每个组件用作JavaBean进行可视编程时,才必须考虑更多的问题。

②建立自定义Swing组件――或者扩展已经存在的组件。

建立自定义组件或者扩展现有的组件需要更深入地了解Swing。这时一定要了解Swing体系结构、事件和较低级别的类。此外,如果决定细分Swing组件,则必须承担处理这个组件的责任,否则,新组件的执行情况就可能是不定的。

③为一个或者多个Swing组件覆盖或者建立一个新的外观风格。

最后,用户可能希望更改一个或者多个Swing组件的外观风格。这是可以使用的3种方法中最复杂的一种方法,它要求全面了解每个组件的设计、体系结构基本原理和图

形基本元素。此外,用户必须了解如何使用Swing的UIManager和UIDefaults类来“设置”每个组件的外观风格。

(二)Swing程序包和类

Swing库中的程序包很多,只在此大致介绍在后面的图像浏览器的实现中用到的程序包。其中用得最多的当然是javax.swing,另外有javax.swing.border、javax.swing.event、javax.swing.tree、javax.swing.filechooser。以下给出了这些程序包的简短描述。图1展示了Swing组件(类)间的继承关系。

1.javax.swing

包含核心Swing组件,其中包括绝大多数模型接口和支持类。

2.javax.swing.border

包含对抽象边框类的定义和8个预定义的边框。边框不是组件,它们是特殊的图形元素,Swing将它们作为属性对待,并将它们放置在组件周围,用它们来代替镶边。如果想建立自定义边框,则可以细分这个程包中某个现有的边框或者从头开始编写一个新的边框。

3.javax.swing.event

定义了几个Swing组件用来在类之间传达异步信息的新的监听器和事件。为了建立自定义事件,可以细分这个程序包中的各种事件,或者编写自己的事件类。

4.javax.swing.filechooser

包含对JFileChooser组件的支持。

5.javax.swing.plaf

定义了为每个Swing组件建立可插拔外观风格的惟一元素。其各种子程序包被用来在平台到平台基础上为每个组件绘制单独的外观风格。Windows和Motif外观风格的具体实现在com.sun.java.swing.plaf的程序包中,Mac OS外观风格在com.apple.mrj.swing下。

6.javax.swing.tree

定义了用于分层的树形组件的模型和视图,这种组件可以表现文件结构,或者表现一个事物具有一系列属性。

图1Swing组件层次结构

说明:

(三)MVC体系结构

Swing使用模型-视图-控制器体系结构(MVC)作为它的每个组件的基本设计。实质上,MVC将GUI组件拆分成三个元素。每个元素都对组件的表现起着至关紧要的作用。

1.模型

模型包括每个组件的状态数据。不同类型的组件有不同的模型。例如,滚动条组件的模型可能包含有关可调整“滑尺”当前位置、最大值、最小值和滑尺宽度(与值的范围有关)的信息。另一方面,菜单可能只包含一个用户用来从中进行选择的菜单项列表。不论组件在屏幕上是如何被描绘的,这些信息总是相同的,模型数据总是独立于组件的可视表示。

2.视图

视图是指组件在屏幕上的表现形式。可以参见两个不同GUI平台上的一个应用程序窗口,这是显示视图如何不同的一个好例子。又如,几乎所有窗口框架都有一个位于窗口顶端的标题栏。不过,标题栏的左边可能有一个关闭框(类似于Mac OS平台),或者可能在标题栏的右边有一个关闭框(与Windows平台中的类似)。

3.控制器

控制器是用户界面的一部分,它指示组件如何与事件进行交互。事件的形式有很多种,例如,鼠标单击、获得或者失去焦点、触发特定菜单命令的键盘事件,甚至是重新绘制某一

部分屏幕的指示。控制器决定了每个组件如何对事件作出反应。

图2通过MVC体系结构进行通信

Swing通常使用一个叫做模型代理(model-delegate)的MVC设计的简化变体。这个设计将视图和控制器对象合并到一个元素中,即UI代理,该元素将组件绘制到屏幕上,并处理GUI事件。模型负责维护有关组件状态的信息。使用Java语言捆绑图形功能和事件处理会容一些,因为许多事件处理是使用AWT的。模型与UI代理之间的通信是双向的。

图3对于Swing而言,视图和控制器被合并成一个UI代理对象中

四图像浏览器的设计与实现

(一)需求分析

1.功能需求

①打开一个图像文件。

②通过树形结构,查看图像文件,并可选择,打开。

③打开多个图像后,可将其平铺显示。

④对打开的所有图像窗口,可同时全部关闭。

⑤能进行前一页,后一页的操作,使当前处于活动状态的图像窗口显示与当前图像

文件相邻的其它图像文件。

⑥能进行对图像的放大缩小操作。

⑦图像被改变后,能重新加载图片。

⑧能选择用户界面的外观。

2.环境配置

①安装JDK1.4.2(在D盘下)。

②配置环境变量。

在windows XP操作系统下,选择“我的电脑”(右键),高级,环境变量。在“用户变量”--->“新建”,变量名中输入:include,变量值中输入:d:\ j2sdk1.4.2_05\include;

新建变量lib,值设置为:d:\ j2sdk1.4.2_05\lib;新建变量path,值设置为:d:\ j2sdk1.4.2_05\bin;然后确定。配置完后,要重新启动计算机,环境变量才能有效。(二)界面结构设计

欢迎屏幕出现3秒后,显示用户界面,大致布局如下:

图4界面结构图

1.操作区

接收用户的大部分操作命令。其中包括一个菜单栏和一个工具栏。

2.树形查看区

以树的形式查看文件,有打开文件的操作。

3.图像浏览区

没有任何操作,只是供显示打开的图像窗口的载体。

4.图像窗口

没有任何操作,当有打开图像文件的命令时,在图像浏览区新建一个图像窗口,显示图像。

(三)组件的选用

欢迎屏幕,以无边框的窗口显示。自定义类JSplashWindow,它作为标准组件JWindow 的子类。并实现接口Runnable,以控制程序刚启动时,只显示欢迎屏幕,主线程休眠3秒。

主界面由主类JImageViewer实现,继承JFrame,实现ActionListener接口,对界面中简单的“退出”(退出程序)、“关于”命令作出响应。

操作区JPanel,内加载JMenuBar,菜单栏能完成所有操作。其中有一菜单实现用户界

面的外观风格的切换,只能有一种外观风格被选择,因此使用JRadioButtonMenuItem和ButtonGroup。

操作区内另有工具栏,使用JToolBar,为了让工具栏能更好地被拖出和放回原位,而不影响界面的布局,使用自定义的类JToolBarPanel,该类是JPanel的子类,并实现了ContainerListener接口,当容器内容因为有某一组件被加入或删除而发生改变时,该监听器的相关方法将被触发,以调整布局。

在工具栏上,用户能通过按钮完成常用的操作。为了使用户界面更加整洁,美观,使用了由JButton扩展来的自定义类JFancyButton,该类实现的按钮,不仅具有其父类的可以设置一般状态、鼠标经过状态、鼠标点击状态的不同图标,还去掉了普通按钮具有的边框。

主界面除操作区的以下部分,为了使界面更加灵活,使用了JSplitPane,这样树形查看区就可以被收起,用户就有更大的图像浏览区。

树形区域使用自定义类TreeExplorer,为了在树中只列出gif、jpg、png格式的文件,使用自定义类ImageFilter(实现接口java.io.FileFilter)。图像浏览区使用JDesktopPane,在其实例的最底层加入了JLabel的一个只带图标的对象,作为图像浏览区的背景。

图像窗口由JInternalFrame扩展的自定义类JImageFrame实现。因为该窗口是用来打开图像文件的,所以此自定义类中用到了JScrollPane、File、Image。

另外,打开文件的对话框使用了JFileChooser,为了在选择文件中只显示gif、jpg、png格式的文件,使用了JDK1.4.2中demo/jfc下FileChooserDemo中的ExampleFileFilter (继承于javax.swing.filechooser.FileFilter)。“关于”对话框的弹出直接用JOptionPane.showMessageDialog()方法完成。

图5标明了以上所提组件在界面上的位置安排:

图5图形界面详细布局安排(主类JImageViewer所使用组件)

说明:边框色与所用组件对应如下(粗体表示标准组件,粗斜体表示扩展的组件)JPanel JMenuBar JToolBarPanel JToolBar JFancyButton JSplitPane TreeExplorer JLabel JDesktopPane JImageFrame (四)主要模块功能及实现

实现这个程序,共定义了9个类(不计内部类)。它们分别是: 主类JImageViewer、JToolBarPanel、JFancyButton、JSplashWindow、ExampleFileFilter、TreeExplorer、JImageFrame、ImageFilter和ExampleFileFilter。其中ExampleFileFilter是从JDK中demo/jfc/FileChooserDemo的源文件中借用的,JToolBarPanel则借鉴于JDK中demo/jfc/swingset2中的swingset2.java中定义的ToolBarPanel类。它们之间的关系如

图6所示:

图6各模块关系图

说明:上图中A B 表示类A使用类B

其中主要模块的功能及实现介绍如下(详细代码实现请见附录):

1. JImageViewer

建立用户界面外观,使用监听器LnFListener响应用户对界面外观的选择,实现ActionListener接口,对“退出”、“关于”操作作出响应。另外,其中定义了内部类OpenListener、CloseallListener、TitleActionListener、BrowseListener、ScaleListener,

它们都实现了ActionListener,分别处理“打开”(文件)、“关闭所有图像窗口”、“平铺窗口”、“前后翻页”和“放大缩小”的命令。

2. JImageFrame

显示图像,继承JInternalFrame,其结构如下:

属性: Image image; //当前图像

File file; //当前图像文件

JScrollPane jsp; //滚动窗,当图像过大时,可以滚动滚动条来查看

JLabel jlab; //只含图标,显示图片方法: public void setImage(File f) //更新当前图片为图片文件f public File getImage() //得到当前图片,并返回

public void scaleImage(double p) //按照参数p的比例更改图片大小

public void reLoad() //重新加载当前图片文件3. TreeExplorer

一个浏览面板,以树的形式浏览磁盘上的图像文件,继承JScrollPane。

其中定义了4个内部类:

①FileNode:定义文件节点类。包含了一个File成员对象,所有操作都是围绕着

这个File对象来进行的。其中的主要方法expand(),是对节点展开,获取子节点的具体实现。

②MyRenderer:继承TreeCellRenderer(渲染器接口)的默认实现类

DefaultTreeCellRenderer。对树中节点的图标进行了设置,不同状态的节点使用不同的图标,同时增加了tooltip支持。

③MyExpansionListener:节点展开事件监听器,实现TreeExpansionListener。

对节点展开事件进行了处理,因为展开节点,获取节点信息时,处理的时可能会比较长,为了不让界面的操作冻结,其中使用了线程。

④MySelectionListener:选择事件监听器,实现TreeSelectionListener。当树

中节点被选中时,触发选择事件,将当前路径的文件,赋给属性currentfile,以便将当前树中选中的文件传递给其它类。

4. JFancyButton

无边框按钮,接收用户命令,触发监听器,继承JButton。

通过以下三条语句去掉按钮边框:

setBorderPainted(false);

setBorder(new EmptyBorder(new Insets(0,0,0,0)));

setContentAreaFilled(false);

5. LnFListener

对外观进行设置,实现ActionListener接口,使用以下语句:

UIManager.setLookAndFeel(lnfName);

SwingUtilities.updateComponentTreeUI(frame);

五程序运行情况说明

程序能正常运行,能完成即定的功能需求。

程序执行后,欢迎屏幕如图7;进入主界面,打开三幅图像后,进行“平铺”操作的效果如图8。图8是在JavaMetal风格下,点击Face菜单中的选项可切换到Windows或Mac OS 的外观风格。界面中对功能键都给出了相应的提示和快捷键。程序在使用“树”获取磁盘文

件信息时,运行有点慢,应该是由于Java是解释型语言所致。另外,前后翻页的功能在代码实现上方法不太好,导致结果不是很稳定,不过还是能够达到按序浏览某文件夹内所有图像的效果,这个文件夹是当前得到焦点的图像窗口中所显示的图像文件所在的文件夹。

图7欢迎屏幕

图8Metal风格下的界面(平铺了三个图像窗口)

六小结

本次毕业设计,讨论了图形用户界面设计的重要性,如何用Java Swing设计一个良好的图形用户界面,并成功实现了一个图像浏览器。这个图像浏览器运行良好,能打开gif、jpg、png格式的文件,完成前一张、后一张、放大、缩小等操作。

由于自己水平有限,这个图像浏览器功能比较简单,还有许多地方需要完善。如对于树

的选择事件,如果当用户打开其中某一文件夹节点时,在右边的图像浏览区能够显示出该文件夹内的所有图像的缩略图,双击缩略图,就能打开图像。这样会更方便用户对文件的选择。另外,打开文件的对话框,最好也能有预览的功能。既然是图像浏览器,最好还附带一些对图像的处理功能。

致谢

参考文献

[1]印旻.Java语言与面向对象程序设计.北京:清华大学出版社,2000.183~184

[2]Marc Loy,Robert Eckstein,Dave Wood等.Java Swing(第二版).北京:清华大学出

版社,2004.1~682

[3]邵荣.Java编程实践指南.北京:清华大学出版社,2003.90~120

[4]Kenneth F. Krutsch,David S. Cargo,Virginia Howlett.Java用户界面编程指南.北

京:电子工业出版社,2002.10~30

[5]James Hobart.出色图形用户界面(GUI)设计规范.https://www.doczj.com/doc/a87307548.html,,2001

[6]张晨,付冰,赵军等.Java2应用编程150例.北京:电子工业出版社,2003.9~11

[7]张洪斌.Java程序设计白事通.北京:清华大学出版社,2001.205~322

[8]唐大仕.Java程序设计.北京:北方交通大学出版社,2003.295~303

[9]谭浩强.Java编程技术.北京:人民邮电出版社,2003.183~185

[10]Rogers Cadenhead,Laura Lemay.21天学通Java2(第三版).北京:人民邮电出版社,

2003.440~447

[11]nkoffe.分享Swing学习的一些经验.https://www.doczj.com/doc/a87307548.html,,2005

附录

主要部分源代码如下:

// JImageViewer.java

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.io.*;

import java.beans.*;

public class JImageViewer extends JFrame implements ActionListener{

JPanel toppane;

JDesktopPane desktop;

JLabel backgr;

JSplitPane jsp;

TreeExplorer treeEx;

int internalX;

int internalY;

public JImageViewer(){ //构造函数super("Vision");

ImageIcon icon=new ImageIcon("images/icon.png");

setIconImage(icon.getImage());

Container contentPane=getContentPane(); //JFrame内容窗格

//======================menu============================

String[] editItems=new String[]{"Zoom In","Zoom Out"};

char[] editShortcuts={']','['};

JMenuBar mbar=new JMenuBar();

JMenu fileMenu=new JMenu("File");

fileMenu.setMnemonic('F'); //该方法继承于AbstractButton

JMenu browseMenu=new JMenu("Browse");

JMenu faceMenu=new JMenu("Face");

JMenu aboutMenu=new JMenu("About");

JMenuItem openItem=new JMenuItem("Open",'O');

openItem.setActionCommand("openItem");

OpenListener openlistener=new OpenListener();

openItem.addActionListener(openlistener);

JMenuItem closeItem=new JMenuItem("Close All",'C');

CloseallListener closelistener=new CloseallListener();

closeItem.addActionListener(closelistener);

JMenuItem exitItem=new JMenuItem("Exit",'X');

exitItem.addActionListener(this);

fileMenu.add(openItem);

fileMenu.add(closeItem);

fileMenu.add(exitItem);

fileMenu.insertSeparator(2);

ScaleListener scalelistener=new ScaleListener();

JMenuItem zinItem=new JMenuItem("Zoom In");

zinItem.setAccelerator(KeyStroke.getKeyStroke('[',

Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),false));

zinItem.addActionListener(scalelistener);

JMenuItem zoutItem=new JMenuItem("Zoom Out");

zoutItem.setAccelerator(KeyStroke.getKeyStroke(')',

Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),false));

zoutItem.addActionListener(scalelistener);

ReloadListener reloadlistener=new ReloadListener();

JMenuItem loadItem=new JMenuItem("Reload");

loadItem.setAccelerator(KeyStroke.getKeyStroke('R',

Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),false));

loadItem.addActionListener(reloadlistener);

BrowseListener browselistener=new BrowseListener();

JMenuItem backItem=new JMenuItem("Back");

backItem.setAccelerator(KeyStroke.getKeyStroke('A',

Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),false));

backItem.setActionCommand("back");

backItem.addActionListener(browselistener);

JMenuItem nextItem=new JMenuItem("Next");

nextItem.setAccelerator(KeyStroke.getKeyStroke('S',

Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),false));

nextItem.setActionCommand("next");

nextItem.addActionListener(browselistener);

JMenuItem tileItem=new JMenuItem("Tile Frames");

tileItem.setAccelerator(KeyStroke.getKeyStroke('T',

Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),false));

TileActionListener tilelistener=new TileActionListener();

tileItem.addActionListener(tilelistener);

browseMenu.add(zoutItem);

browseMenu.add(zinItem);

browseMenu.add(loadItem);

browseMenu.add(backItem);

browseMenu.add(nextItem);

browseMenu.addSeparator();

browseMenu.add(tileItem);

JMenuItem item;

LnFListener lnfListener=new LnFListener(this);

ButtonGroup buttonGroup=new ButtonGroup();

faceMenu.add(item=new JRadioButtonMenuItem("Mac"));

item.addActionListener(lnfListener);

buttonGroup.add(item);

faceMenu.add(item=new JRadioButtonMenuItem("Metal"));

item.addActionListener(lnfListener);

item.setSelected(true);

buttonGroup.add(item);

faceMenu.add(item=new JRadioButtonMenuItem("Windows"));

item.addActionListener(lnfListener);

buttonGroup.add(item);

JMenuItem aboutItem=new JMenuItem("About Me",new ImageIcon("images/ball.png"));

aboutItem.addActionListener(this);

aboutMenu.add(aboutItem);

mbar.add(fileMenu);

mbar.add(browseMenu);

mbar.add(faceMenu);

mbar.add(aboutMenu);

//====================menu end==========================

//=====================toolbar=========================== JFancyButton openBtn=new JFancyButton(new ImageIcon("images/openn.png"),

new ImageIcon("images/openp.png"), new ImageIcon("images/openr.png"));

openBtn.setActionCommand("openBtn");

openBtn.setToolTipText("Open Files");

openBtn.addActionListener(openlistener);

JFancyButton zinBtn=new JFancyButton(new ImageIcon("images/zinn.png"), new ImageIcon("images/zinp.png"), new ImageIcon("images/zinr.png"));

zinBtn.setToolTipText("Zoom In");

zinBtn.setActionCommand("Zoom In");

zinBtn.addActionListener(scalelistener);

JFancyButton zoutBtn=new JFancyButton(new ImageIcon("images/zoutn.png"), new ImageIcon("images/zoutp.png"), new ImageIcon("images/zoutr.png"));

zoutBtn.setToolTipText("Zoom Out");

zoutBtn.setActionCommand("Zoom Out");

zoutBtn.addActionListener(scalelistener);

JFancyButton backBtn=new JFancyButton(new ImageIcon("images/backn.png"), new ImageIcon("images/backp.png"), new ImageIcon("images/backr.png"));

backBtn.setToolTipText("Back");

backBtn.setActionCommand("back");

backBtn.addActionListener(browselistener);

JFancyButton nextBtn=new JFancyButton(new ImageIcon("images/nextn.png"), new ImageIcon("images/nextp.png"), new ImageIcon("images/nextr.png"));

nextBtn.setToolTipText("Next");

nextBtn.setActionCommand("next");

nextBtn.addActionListener(browselistener);

JFancyButton tileBtn=new JFancyButton(new ImageIcon("images/tilen.png"), new ImageIcon("images/tilep.png"), new ImageIcon("images/tiler.png"));

tileBtn.setToolTipText("Tile Frames");

tileBtn.addActionListener(tilelistener);

JToolBar jtb=new JToolBar();

jtb.setRollover(true);

jtb.add(openBtn);

jtb.add(zoutBtn);

jtb.add(zinBtn);

jtb.add(backBtn);

jtb.add(nextBtn);

jtb.add(tileBtn);

JToolBarPanel toolbarPanel= new JToolBarPanel();

toolbarPanel.setLayout(new BorderLayout());

toolbarPanel.add(jtb,BorderLayout.CENTER);

toolbarPanel.addContainerListener(toolbarPanel);

//====================toolbar end=======================

//====================panel============================= toppane=new JPanel(new BorderLayout());

toppane.add(mbar,BorderLayout.NORTH);

toppane.add(toolbarPanel,BorderLayout.SOUTH);

//===================panel end==========================

//====================splitpane=======================

desktop=new JDesktopPane();

icon = new ImageIcon("images/bg.jpg"); //添加背景

backgr= new JLabel(icon);

backgr.setBounds(0,0,icon.getIconWidth(),icon.getIconHeight());

desktop.add(backgr, new Integer(Integer.MIN_V ALUE));

JPanel treepane=new JPanel(new BorderLayout());

treeEx=new TreeExplorer();

JPanel bottom=new JPanel(new BorderLayout());

JLabel status=new JLabel("Please select a file. ^O^");

JFancyButton treeopen=new JFancyButton(new ImageIcon("images/treeopenp.png"), new ImageIcon("images/treeopenp.png"),new ImageIcon("images/treeopenr.png"));

treeopen.setActionCommand("treeopen");

treeopen.addActionListener(openlistener);

treeopen.setToolTipText("Open");

bottom.add(status,BorderLayout.CENTER);

bottom.add(treeopen,BorderLayout.EAST);

treepane.add(treeEx,BorderLayout.CENTER);

treepane.add(bottom,BorderLayout.SOUTH);

treepane.setMinimumSize(new Dimension(200,400));

jsp=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,treepane,desktop);

jsp.setOneTouchExpandable(true);

//===================splitpane end====================

contentPane.add(toppane,BorderLayout.NORTH);

contentPane.add(jsp,BorderLayout.CENTER);

internalX=0;

internalY=0;

} //构造函数完

public void actionPerformed(ActionEvent e)

{

if(e.getActionCommand()=="Exit"){ //“退出”操作

dispose();

System.exit(0);

}

if(e.getActionCommand()=="About Me"){//“关于”操作

JOptionPane.showMessageDialog(this,"chenfan2005@https://www.doczj.com/doc/a87307548.html,",

"About",https://www.doczj.com/doc/a87307548.html,RMA TION_MESSAGE);

}

}

class OpenListener implements ActionListener{ //打开文件

File file;

public void actionPerformed(ActionEvent e){

if(e.getActionCommand()=="treeopen"){

file=treeEx.getSelectedFile();

if(file==null){

JOptionPane.showMessageDialog(null,"Please select a file in the TREEVIEW ! ",

"Confirm",https://www.doczj.com/doc/a87307548.html,RMA TION_MESSAGE);

}

}

if(e.getActionCommand()=="openItem"||e.getActionCommand()=="openBtn"){

JFileChooser chooser = new JFileChooser();

ExampleFileFilter filter = new ExampleFileFilter();

filter.addExtension("jpg");

filter.addExtension("gif");

filter.addExtension("png");

filter.setDescription("JPG , GIF & PNG Images");

chooser.setFileFilter(filter);

chooser.setDialogTitle("打开图象文件");

int returnVal = chooser.showOpenDialog(null);

if(returnVal == JFileChooser.APPROVE_OPTION) {

file=chooser.getSelectedFile();

}

else file=null;

}

if(file!=null){

JImageFrame imageframe=new JImageFrame(file.getPath(),true,true,true,true,file);

imageframe.setBounds(internalX,internalY,500,400);

if(internalX<100){

internalX+=30;

internalY+=30;

}

else{

internalX=10;

internalY=10;

}

Icon icon = new ImageIcon("images/iicon.gif");

imageframe.setFrameIcon(icon);

desktop.add(imageframe,new Integer(1));

imageframe.setVisible(true);

}

}

}

public class CloseallListener implements ActionListener{ //关闭图像窗口public void actionPerformed(ActionEvent ec){

desktop.removeAll();

desktop.add(backgr, new Integer(Integer.MIN_V ALUE));

internalX=0;

internalY=0;

repaint();

}

}

public class TileActionListener implements ActionListener { //平铺图像窗口

public void actionPerformed(ActionEvent ev) {

JInternalFrame[] allframes = desktop.getAllFrames();// How many frames do we have?

int count = allframes.length;

if (count == 0) return;

int sqrt = (int)Math.sqrt(count); // Determine the necessary grid size

int rows = sqrt;

int cols = sqrt;

if (rows * cols < count) {

cols++;

if (rows * cols < count) {

rows++;

}

}

Dimension size = desktop.getSize();// Define some initial values for size & location.

int w = size.width / cols;

int h = size.height / rows;

int x = 0; // Iterate over the frames, deiconifying any iconified frames and then

int y = 0; // relocating & resizing each.

for (int i = 0; i < rows; i++) {

for (int j = 0; j < cols && ((i * cols) + j < count); j++) {

JInternalFrame f = allframes[(i * cols) + j];

if (!f.isClosed() && f.isIcon()) {

try {

f.setIcon(false);

}

catch (PropertyVetoException ignored) {}

}

desktop.getDesktopManager().resizeFrame(f, x, y, w, h);

x += w;

}

y += h; // start the next row

x = 0;

}

}

}

class BrowseListener implements ActionListener{//浏览图像File parentFile,file;

File[] files;

JInternalFrame frame;

int i=0;

public void actionPerformed(ActionEvent e){

if(desktop.getSelectedFrame()!=null){

frame=desktop.getSelectedFrame();

try{

frame.setMaximum(true);

}catch (PropertyVetoException ignored) {}

JImageFrame image=(JImageFrame)frame; //类型转换!!

file=image.getImage();

parentFile=file.getParentFile();

try{

ImageFilter filter=new ImageFilter();

files=parentFile.listFiles(filter);

}

catch(Exception ex){

ex.printStackTrace();

}

if(e.getActionCommand()=="next") i=(i+1)%files.length;

if(e.getActionCommand()=="back") i=(i-1>=0)?(i-1):(files.length-1);

image.setImage(files[i]);

}

}

}

class ScaleListener implements ActionListener{//缩放图像JInternalFrame frame;

double p;

public void actionPerformed(ActionEvent e){

if(desktop.getSelectedFrame()!=null){

frame=desktop.getSelectedFrame();

JImageFrame image=(JImageFrame)frame;

if(e.getActionCommand()=="Zoom Out") p=1.5;

if(e.getActionCommand()=="Zoom In") p=0.6;

image.scaleImage(p);

}

}

}

class ReloadListener implements ActionListener{//重载原图JInternalFrame frame;

public void actionPerformed(ActionEvent e){

if(desktop.getSelectedFrame()!=null){

frame=desktop.getSelectedFrame();

JImageFrame image=(JImageFrame)frame;

java程序设计实习报告

《Java程序设计》 实 习 报 告 中原工学院信息商务学院 经济管理系 2010年6月20号

目录 一、实习题目 (2) 二、实习目的 (2) 1、社会需求 (2) 2、专业需求 (2) 三、开发环境 (2) 四、实习内容 (3) 1、系统功能需求 (3) 2、数据库需求 (4) 五、设计过程 (4) 1、总体设计 (4) 2、详细设计 (5) 六、调试过程 (5) 七、实习小结 (5) 八、参考资料 (6)

一、实习题目 学生信息管理系统的设计与开发 二、实习目的 1、社会需求 一直以来学生的成绩管理是学校工作中的一项重要内容,随着办学规模的扩大和招生人数的增加,学校工作繁杂、资料重多,普通的成绩管理已不能适应时代的发展,它浪费了许多的人力和物力。在当今信息时代这种传统的管理方法必然被以计算机为基础的信息管理系统所代替。虽然管理信息系统已进入高校,但还未普及而且对于学生成绩管理来说,还没有一套完整的、统一的系统,建立一个成绩维护系统是非常必要的。建立学生成绩管理系统,采用计算机对学生成绩进行管理,能进一步提高办学效益和现代化水平。帮助广大教师提高工作效率,实现学生成绩维护工作流程的系统化、规范化和自动化。2、专业需求 《Java程序设计》课程是电子商务专业的一门专业必修课程,通过java实习不仅可以提升本专业我们对此课程中的理论知识的综合应用能力而且可以提高我们的逻辑思维能力、软件开发能力。我们通过Java技术在Windows平台下开发学生信息管理系统。能够切实提高我们的程序设计水平,在实践中掌握面向对象程序设计的开发思想。 三、开发环境 操作系统;Windows XP 编程环境:MyEclipse 6.0

用户界面设计说明书样本

用户界面设计说明 书

[键入公司名称] [键入文档标题] [键入文档副标题] [键入作者姓名] 2012/11/27

修订历史记录

目录 1 引言................................................... - 3 - 1.1编写目的............................................ - 3 - 1.2项目背景............................................ - 4 - 1.3定义、缩略词........................................ - 4 - 1.4参考资料............................................ - 5 - 2 应当遵循的界面设计规范 ................................. - 5 - 2.1用户界面设计原则.................................... - 5 - 2.2界面一致性.......................................... - 5 - 2.3布局合理化原则.......................... 错误!未定义书签。 3 界面的关系图和工作流程图 ............................... - 7 - 4 主界面................................................ - 10 - 4.1主界面............................................. - 10 - 4.2子界面A ........................................... - 11 - 4.3子界面B ........................................... - 12 - 4.4子界面C ........................................... - 13 - 4.5子界面D ........................................... - 14 - 4.6子界面E ........................................... - 15 - 4.7子界面F ........................................... - 16 - 5 美学设计.............................................. - 17 -

java菜单和工具栏界面代码设计

实验八菜单和工具栏 import java.awt.*; import javax.swing.*; import java.awt.event.*; public class c extends JFrame{ private JMenuBar menuBar; private JMenu xtMenu,xyMenu,zyMenu,xsMenu,kcMenu,cjMenu,jsMenu;// private JMenuItem aItem,bItem,cItem,dItem; // private JMenuItem eItem,fItem,gItem,hItem; private JMenuItem iItem,jItem,kItem,lItem; private JMenuItem mItem,nItem,oItem,pItem; private JMenuItem qItem,rItem,sItem,tItem; private JMenuItem uItem,vItem,wItem,xItem; private JMenuItem yItem,zItem,aaItem,bbItem; public c(String account){ setTitle("学生管理系统"+"当前管理员为"+account); setSize(500,400); center(this);

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); createMenu(); showToolBar(); setVisible(true); } //caidan public void createMenu(){ menuBar=new JMenuBar();//创建菜单栏 xtMenu=new JMenu("系统管理"); aItem=new JMenuItem("学院设置"); bItem=new JMenuItem("专业设置"); cItem=new JMenuItem("修改密码"); dItem=new JMenuItem("退出"); //dItem.setMnemonic('Q'); xtMenu.add(aItem); xtMenu.add(bItem); xtMenu.addSeparator(); xtMenu.add(cItem); xtMenu.addSeparator();

界面设计风格

界面设计规范 1.引言 (2) 1.1概述 (2) 1.2信息位置的安排原则 (2) 2.规范基本规定 (4) 2.1环境 (4) 2.2文字与颜色 (4) 2.3数据格式与显示 (4) 2.4 键盘控制与无鼠标操作 (4) 3.窗口控件 (5) 3.1 MDI与SDI (5) 3.2 快闪窗口(SPLASH) (6) 3.3 登录窗口(LOGIN) (7) 3.4关于窗口(ABOUT) (8) 3.5 响应窗口(RESPONSE) (8) 3.6 系统主窗口 (9) 3.7 业务办理类窗口 (10) 3.8 数据查询类窗口 (12) 4.数据窗口控件 (14) 5.菜单控件 (17) 6. 按钮控件 (17) 7. 输入域 (17) 8. 帮助 (17)

1.引言 用户界面是应用系统的外在表现,是用户工作的接口,它的质量会直接影响系统的友好性与可用性。 本规范用于说明进行管理信息系统(MIS)设计开发时,所应遵循的用户界面开发规范,旨在描述设计怎样的界面风格,为用户所接收。该规范主要针对PowerBuilder开发工具的进行设计。由于PowerBuilde所倡导并提供的风格是基于图形化用户界面GUI的,是与Windows的界面风格相一致的,因此该规范同样可以适用于其他的前台开发工具。 系统界面如果采用WEB页面的方式,则设计原则另行规定。 规范中未做声明的内容,以满足开发总则为准。 1.1概述 有资料调查结果显示,用户希望的最佳屏幕特点为: ●一个规整、清晰、毫不混乱的外观。 ●对于将要显示的内容以及对其将进行的操作有一个明确的提示。 ●所希望的信息出现在其应该出现的位置。 ●清楚地指明标题、小标题、数据、指示、选择等各种项目的关系。 ●平白、简单的文字。 ●通过简单的途径找到系统所含内容及得到它的方法。 ●明确地指出什么时候某个操作能引起数据或系统运行的永久性改变 这样就要求我们所设计的用户界面,应满足如下基本要求: *充分性:用户界面应充分满足功能要求 *一致性:用户界面应满足一致性要求,包括本模块内与分系统之间 *简洁性:用户界面在满足功能的前提下应尽量保持简洁 *合理性:用户界面的布局与设置应满足合理的功能要求 美观性:用户界面应满足美观性要求 1.2信息位置的安排原则 1.在屏幕左上角提供明显的起动点。 2.在屏幕上为诸如菜单、按钮、错误信息、标题、数据区等特定信息保留特定的区域, 并使这些区域在所有屏幕上保持一致。 3.对各种区域的编排应保持均衡、规整、对称、简明、比例协调、整体性。 ●屏幕标题位于上中部,有利于产生对称感;菜单置于屏幕顶部,仅在标题 之下;按钮置于屏幕底部,在信息区之下。

java实验报告实验六Java图形用户界面

信息工程学院 Java程序设计实习报告 JAVA图形用户界面 实验六Java图形用户界面 1.实验目的 (1)掌握图形用户界面基本组件。 (2)了解如何使用布局管理器对组件进行管理。 (3)掌握Java事件处理机制。 2.实验内容 实验题 1 编写一个模拟计算器的程序,使用面板与网格布局,添加一个文本框,10个数字按钮(0-9),4个加减乘除按钮,一个等号按钮,一个清除按钮,要求将计算公式与结果显示在文本框中。 运行结果: 实验报告的内容与格式按任课教师的要求书写。

加法: 主要代码: private void initComponents() { jButton1 = new javax、swing、JButton(); jButton2 = new javax、swing、JButton(); jButton3 = new javax、swing、JButton(); jButton4 = new javax、swing、JButton(); jButton5 = new javax、swing、JButton(); jButton6 = new javax、swing、JButton(); jButton7 = new javax、swing、JButton(); jButton8 = new javax、swing、JButton(); jButton9 = new javax、swing、JButton(); jButton10 = new javax、swing、JButton(); jButton11 = new javax、swing、JButton(); jButton12 = new javax、swing、JButton(); jButton13 = new javax、swing、JButton(); jButton14 = new javax、swing、JButton(); jButton15 = new javax、swing、JButton(); jTextField1 = new javax、swing、JTextField(); setStub(null); jButton1、setText("3"); jButton1、addActionListener(new java、awt、event、

Java注册界面设计

J a v a注册界面设计 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

Java注册界面设计 package test; public class Register_GUI { public Register_GUI() { RegisterFrame rf = new RegisterFrame(); (true); } public static void main(String args[]) { new Register_GUI(); } } class RegisterFrame extends JFrame { rim(); = new String()); = () "男" : "女"; = ().trim(); = ().toString(); (null, "\t 用户名不能为空"); return; } (null, "\t 密码不能为空 "); return; } (null, "密码两次输入不一致,请重新输入"); return; } (null, "\t 年龄不能为空"); return; } int age = ; if (age <= 0 || age > 100) { (null, "\t 年龄输入不合法"); return; } (null, "\t 注册成功!" +" \n 姓名:"++" \n 性别:"++"\n 年龄:"++"\n 班级: "+;

} if () == resetbtn) { (""); (""); (""); (); (""); (0); } if () == cancelbtn) { (); } } } class Register { String name; String password; String sex; String age; String nclass; }

java的界面设计报告

Java 学院:计算机科学学院 班级:计算机科学与技术2班 姓名:雷燕 学号:41209010227 综 合 大 作 业

一、问题背景和描述 针对高等院校的教学过程,开发出相关的教学过程信息管理系统,提高教学质量。教学过程如下图。每项教学活动中都会产生相关信息,利用学习的知识对各种信息进行存储和维护。 二、问题分析及设计思路 1、所需解决问题: 实体功能存放位置界面风格 填空题search&display File Swing 2、实体分析: 有实际意义实体: (1)填空题的存储位置在file中 (2)属性为:题目内容,题目编号以及题目的答案 (3)引用:先存入了F盘,然后再从文件中读取,然后按编号搜索及显示。 3、功能分析:查找功能需要首先输入要查找的题目编号,查找到题

目内容并显示。 4、界面分析:只能用Swing继承自Jframe,界面风格为比较随意,整体风格比Awt显得更美观。其中使用方法与AWT有些区别。 5、程序架构: 查找和显示填空题:在界面上输入所需要查找的题目编号,点击ok,在界面中显示所找题号题目内容。 三、类图 四、程序代码 1.首先我创了一个填空题的类,其中它具有题目的编号,内容,正确答案的属性

package package雷燕; //定义一个填空题的类 public class Fullbank { int number; String connents; String answer; public Fullbank(int a,String b,String c) { number=a; connents=b; answer=c; }} 2.我然后把几个填空题类存入了文件,是按对象存入 public class putinfullbank { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { Fullbank []b=new Fullbank[10]; Scanner c=new Scanner(System.in); for(int i=1;i<=10;i++)

界面设计风格说明

界面设计风格说明 1、引言?错误!未定义书签。 1、1、编写目得?错误!未定义书签。 1、2、?文档范围?错误!未定义书签。 1、3、.................................................................................. 读者对象?错误!未定义书签。 1、4、?参考文献...................................................................................... 错误!未定义书签。 1、5、?术语与缩写解释........................................................................ 错误!未定义书签。 2、目标人群?错误!未定义书签。 3、界面设计原则?错误!未定义书签。 3、1、界面一致性?错误!未定义书签。 3、2、?系统响应时间?错误!未定义书签。 3、3、?出错信息与警告.......................................................................... 错误!未定义书签。 3、4、?一般交互原则.............................................................................. 错误!未定义书签。 3、5、信息显示原则........................................................................... 错误!未定义书签。 3、6、?视觉设计?错误!未定义书签。 4、设计说明............................................................................................... 错误!未定义书签。 1.引言 1.1.编写目得 ?本文档就是对系统界面设计风格进行描述, 1.2.文档范围 ?本文档就是对系统界面设计风格进行描述, 1.3.读者对象 ?本文档得阅读对象就是智能手机系统得设计人员、开发人员、业务规范设计人员、软件测试人员。 1.4.参考文献

java图形化界面练习及答案

作业标题:第四次练习题(总分:得分:分)一、单选题(共有题目15题,共计分) 1. 下列属于容器的组件有 A. ) JButton B. JPane C. Canvas D. JTextArea 学生的答案: B 标准答案: B 该题分数: 学生得分: 分 2. 】 下列方法中,不属于WindowListener接口的是A. windowOpened()

B. windowClosed() C. windowActivated() D. > windowAdapter 学生的答案: D 标准答案: D 该题分数: 学生得分: 分 3. 下列不属于Swing中组件的是( )。 A. JPanel B. JTable C. 《 Menu D. JFrame

学生的答案: C 标准答案: C 该题分数: 学生得分: 分 4. 以下Swing组件中哪一个不是顶层容器组件( )。 A. 框架 B. - 对话框 C. 面板 D. 小程序 学生的答案: C 标准答案: A 该题分数: 学生得分: 0分 5. 对于Swing基本控件单选框,若要使两个单选框对象之间具有相互排斥的关系,需要( )。 A. 》

创建两个单选框对象时定义相同的对象名 B. 将两个单选框对象放在同一个面板上 C. 定义一个ButtonGroup对象group,将两个单选框对象加到group中D. 让两个单选框排成一行或一列 学生的答案: C 标准答案: C 该题分数: 学生得分: 分 6. . 容器被重新设置大小后,( )布局管理器的容器中的组件大小不随容器大小的变化而改变。 A. CardLayout B. FlowLayout C. BorderLayout ?

Java课程设计报告

湖北大学 本科课程设计 题目 ATM 自助机模拟程序姓名 学号 专业年级 指导教师 职称

目录 第一章系统描述 (2) 1 前言 (2) 2 系统功能需求 (2) 第二章系统分析与设计 (3) 1 功能模块划分 (3) 2 功能模块的描述 (3) 3 系统设计流程图 (4) 4 测试数据及期望结果 (6) 第三章系统详细设计 (7) 1 主界面开发设计 (7) 2 功能选择界面开发设计 (7) 3 取款界面开发设计 (7) 4 存款界面开发设计 (8) 5 转账界面开发设计 (8) 6 查询界面开发设计 (9) 7 修改密码界面开发设计 (9) 8 界面开发设计使用函数 (9) 第四章系统测试 (11) 第五章源程序部分清单 (21) 第六章实验心得 (30) 参考文献 (31)

第一章系统描述 1 前言 Java技术是一门简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言,它也是一个平台,它基于Java虚拟机技术,借助这个东西建立了跨平台的优势。Java编程语言与众不同之处在于:Java程序既是编译型的,又是解释型的。 Java平台是一种纯软件平台,它有三个版本Java SE、Java EE、Java ME。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 本课程设计采用Eclipse作为开发工具,并采用Window Builder下的SWT Designer来实现相应的功能。着重通过模拟实现当前非常快捷又使用的ATM机来加深对java开发设计的了解,从而进一步提高自己对java图像界面的设计及相关知识的认识。 2 系统功能需求 当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM 柜员机系统,用户可以按照以下规则进行: (1)查询余额:初始余额为10000元。 (2)ATM取款:每次取款金额为100的倍数,一次取款不能超过1000,总额不 超过5000元,支取金额不允许透支,有快捷取款和用户自定义取款。 (3)ATM存款:每次存款金额为100的倍数,一次存款不能超过1000,不能出 现负存款。 (4)ATM转账:只有在两次输入账号相同且输入转账金额正确的情况下才允许 转账,不允许透支。 (5)修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只 有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。

用户界面设计与答案

1.用户满意度=功能+___人机界面_____+响应时间+可靠性+易安装性+____信息____+可维护性+其他因素 2. ____人机交互(人机对话)____是指人与计算机之间使用某种语言、以一定的交互方式,为了完成任务进行的一系列信息交换过程。 3.软件界面设计分为____功能性设计界面____、____情感性设计界面____、____环境性设计界面____。 4.进行系统分析和设计的第一步是___用户分析_____。 5.使用较早,也是使用最广泛的人机交互方式是____交互方式____。 6.软件界面开发流程包括____系统分析____、____系统设计____、____系统实施____三个阶段 7.设计阶段包括界面的____概念设计____、____详细设计____、____原型建立____与界面实现以及综合测试与评估等8.VB 是以结构化___Basic_____语言为基础、以____事件驱动作____为运行机制的可视化程序设计语言。 9.菜单使用形式主要有____菜单操作____和____Tba控件操作____两种。 10.随着计算机图形技术的发展,以直接操纵、桌面隐喻以及所见即所得为特征的____图形用户界面____技术广泛被计算机系统采用。 11.在用VB 开发应用程序时,一般要布置窗体、设置控件的属性、___编写代码___。 12. 假定在窗体上有一个通用对话框,其名称为CommonDialog1,为建立一个保存文件对话框,则需要把Action 属性设置为__value__。 13. 计时器事件之间的间隔通过__interval__属性设置。 14. 语句“Print “5+65=”;5+65”的输出结果为__5+65=70__。 15. 设有下列循环体,要进行4次循环操作,请填空。 x = 1 Do x = x * 2 Print x Loop Until__x<=32__ 16. 下列程序段的执行结果为__2 3 5__。 x = 1 y = 1 For I = 1 To 3 F= x + y x = y y = F Print F; Next I 17. 以下为3个列表框联动的程序,试补充完整。 Private Sub Dir1_Change() File1.Path=Dir1.Path End Sub Private Sub Drive1_Change() Drivel.Path=File1.Path;Dir1.Path=Drivel.Path__[7]__ End Sub 18. 在下列事件过程中则响应该过程的对象名是cmdl,事件过程名是__窗口标题事件__。 Private Sub cmd1_Click() Form1.Caption=“VisualBasic Example” End Sub 19. 当将文本框的SelStar 属性设置为0时,表示选择第开始位置在第一个字符之前,设置为1时表示__[9]__。 20. 以下程序代码实现单击命令按钮Command1 时形成并输出一个主对角线上元素值为“-”,其他元素值为“+”第6*6 阶方阵。 Privas Sub Command1_Click() DimA(6,6) For I = 1 To 6 For J = 1 To 6 If I = J Then Print “-” Else __[10]__ End If Print A (I,J); Next J Print Next I End Sub 21. 字母B的KeyAscii 码值为65,其KeyCode码值___[11]__。 22. Visual Basic 中的控件分为3类:__[12]_、ActioveX 控件和可插入对象。

java简单图形用户界面代码

package dsr; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import https://www.doczj.com/doc/a87307548.html,.Socket; public class Login extends JFrame implements ActionListener{ //定义组件 JPanel northPanel,southPanel,centerPanel,centerPanel1,centerPanel11,centerPanel12; JButton loginBtn,registerBtn,cancalBtn; JLabel userLbl,passwordLbl,titleLbl; JTextField userTxt; JPasswordField passwordPwd; static String name; public Login () { super("用户登录"); northPanel=new JPanel(); southPanel=new JPanel(); centerPanel1=new JPanel(); centerPanel11=new JPanel(); centerPanel12=new JPanel(); //标题 titleLbl=new JLabel("欢迎进入考试系统"); titleLbl.setFont(new Font("隶书",Font.BOLD,24)); northPanel.add(titleLbl); this.add(northPanel,BorderLayout.NORTH); //中间部分 centerPanel1.setLayout(new BorderLayout()); userLbl=new JLabel("用户名"); userTxt=new JTextField(12); centerPanel11.add(userLbl); centerPanel11.add(userTxt); centerPanel1.add(centerPanel11,BorderLayout.NORTH); passwordLbl=new JLabel("密码"); passwordPwd=new JPasswordField(12); centerPanel12.add(passwordLbl); centerPanel12.add(passwordPwd);

Java注册界面设计

Java注册界面设计 package test; import https://www.doczj.com/doc/a87307548.html,ponent; import java.awt.Dimension; import java.awt.Font; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JRadioButton; import javax.swing.JTextField; import javax.swing.border.Border; import java.util.Vector; public class Register_GUI { public Register_GUI() { RegisterFrame rf = new RegisterFrame(); rf.setVisible(true); } public static void main(String args[]) { new Register_GUI(); } } class RegisterFrame extends JFrame { // 框架类 /** * */ private static final long serialVersionUID = -3779096743730354383L; private Toolkit tool; public RegisterFrame() { setTitle("用户注册");

Java项目设计报告

分类号: 密级:学号:0806888 Java项目报告 ——学生信息管理系统 作者姓名: ````` 所在系部:````` 专业: ```````` 指导教师: `````` 2010 年 06 月 27 日

摘要 现代社会随着科技的发展,如果依然采用人工管理庞大的数据库是一项繁重枯燥的工作,无论是数据录入,查询还是修改都存在着工作量大,效率低下,周期长的缺点。而计算机管理系统的引进将给人工管理数据库的工作带来一次彻底的变革。学校由于学生众多,学生数据信息库庞大,使信息的管理成为了一个复杂繁琐的工作。本系统针对学校,经过实际的需求分析,采用功能强大的VB6.0作为开发工具来开发学生信息管理系统。整个系统从符合操作简便,界面美观、灵活、实用的要求出发,完成学生信息管理的全过程,包括系统管理、基本信息管理、学习管理、奖惩管理和打印报表等功能。经过使用证明,本文所设计的学生信息管理系统可以满足学校对学生信息管理方面的需要。本项目报告主要介绍了本课题的开发背景,所要完成的功能和开发的过程。

目录 摘要 (2) 目录 (3) 前言 (4) 正文 (5) 1需求分析 (5) 1.1 管理学生信息 (5) 1.2 管理课程信息 (5) 1.3 管理选课与成绩 (5) 2系统设计 (5) 2.1结构设计 (5) 2.2 功能流程及工作描述 (6) 4详细设计及功能实现 (8) 4.1学生信息管理系统主界面模块 (8) 4.1.1成绩信息综合管理类 (8) 4.1.2添加成绩功能 (14) 4.1.3修改成绩功能 (17) 4.1.4保存成绩查询功能 (20) 总结 (25) 致谢 (26) 参考文献 (27) 小组成员 (28)

软件工程用户界面设计报告.doc

目录0. 文档介绍2 0.1 文档目的 2 0.2 文档范围 2 0.3 读者对象 2 0.4 参考文献 2 0.5 术语与缩写解释 2 1. 应当遵循的界面设计规范3 2. 界面的关系图和工作流程图 5 3. 主界面 5 4. 子界面A 6 5. 子界面B 7 6. 美学设计7 7. 界面资源设计错误!未定义书签。 8. 其他错误!未定义书签。

文档介绍 0.1 文档目的 界面设计是为了满足软件专业化标准化的需求而产生的对软件的使用界面进行美化优化规范化的设计分支。界面设计文档可以让用户对软件产品有了更直观的了解,并且了解各个模块的设计及用意。 0.2 文档范围 文档包括公用界面设计,学生用户界面设计,教师用户界面设计,其中各个界面包括框架设计,编程设计,按钮设计,面板设计,菜单设计,标签设计,图标设计,滚动条及状态栏设计。 0.3 读者对象 登陆网站的游客、注册成会员的学生、教师以及管理员。 0.4 参考文献 提示:列出本文档的所有参考文献(可以是非正式出版物),格式如下: [1] 张海藩,《软件工程导论(第5版)》,清华大学出版社,1900年01月 [2] 杨培添,《软件界面设计》,电子工业出版社,2007年02月 [3] 林锐,《Web软件用户界面设计指南》,电子工业出版社,2005年5月 [4]吴士力,汪孝宜,胡俦,《网络系统开发实例精粹(JSP版)》,电子工业出版社, 2006年8月 [5] 黄艳群,黎旭,李荣丽,《设计·人机界面》,北京理工大学出版社,2007年5月https://www.doczj.com/doc/a87307548.html,/view/43210.html?wtp=tt https://www.doczj.com/doc/a87307548.html,/view/119481.htm 0.5 术语与缩写解释

Java基础实验报告-图形用户界面设计

南京工程学院 实验报告 课程名称 JAVA基础 实验项目名称图形用户界面设计 实验学生班级 实验学生姓名 学号 同组学生姓名 实验时间 实验地点 实验成绩评定 指导教师签字年月日

一、实验目的和要求 1.掌握Java Swing组建的使用方法,包括窗口、框架、对话框、面板、文本编辑框、按钮、组合框等多种布局方式,掌握窗口菜单和快捷菜单设计方式。 2.理解委托时间处理模型,掌握不同组件、不同事件的事件处理方法,设计出能够响应事件的Java图形用户界面。 3.熟悉在组件上绘图的方法。 二、实验题目 用表格存储并显示个人所得税税率表,给定一个月收入值,计算应缴的个人所得税。 三、实验方法与步骤(需求分析、算法设计思路、流程图等) 算法设计思路:本次实验题目为计算个人所得税,所以本人从网上找到了国家最新的税收政策,以下为截图:

因此,我设计了以下核心算法 public void actionPerformed(ActionEvent e) { if(e.getSource()==button_b) { double wage=Double.parseDouble((String)text_wage.getText()); double tax = 0; if(wage<=3500) tax=0; if(wage>3500&&wage<=5000) tax=(wage-3500)*0.03; if(wage>5000&&wage<=8000) tax=(wage-3500)*0.1-105; if(wage>8000&&wage<=12500) tax=(wage-3500)*0.2-555; if(wage>12500&&wage<=38500)

javaEE课程设计报告

《JAVAEE课程设计》课程设计报告 (2012— 2013学年第 2 学期) 系别: 专业名称: 课程设计科目: 学生姓名: 学号: 指导教师: 成绩: 完成时间:

项目组成员及分工 目录 一、网上商城系统概述 (1) 二、需求分析与总体设计 (1) 三、界面设计 (14) 四、数据库设计 (19) 五、代码设计................................. 错误!未定义书签。 六、运行调试................................. 错误!未定义书签。 七、结论与心得 (24) 八、致谢 (24) 九、参考文献 (24)

一、网上商城xmutmall系统概述 购物网站网上商城,为用户提供购物需求。拥有前台客户注册、登录、登出,个人信息修改,商品展示,商品详情浏览,搜索商品,购物车,商品评价,网上新闻,后台登录,后台商品管理、用户管理、评论管理、新闻管理、数据库管理等功能。本购物网站是专门针对网上学生和老师而创建的,旨在为网上师生们提供方便快捷的生活。 二、需求分析与总体设计 开发流程图:

图1 开发流程图 需求分析 1、系统名称 网上商城(XMUTMALL) 2、任务概述 应用JSP与Servlet技术,实现B/S三层架构的WEB应用系统设计。WEB容器选用、数据库服务器选用Oracle。要求实现MVC架构,视图用JSP实现、模型用JavaBean实现、控制器用Servlet实现。完成项目的需求分析与设计,包括数据库设计、功能设计、编码与测试;

3、设计目的 这是针对网上师生的购物网站,在注册之后可以进行校内商品销售和购买,每个客户都拥有买卖的权限,同时也包括旧物拍卖等交易方式,同时还有用户评论功能,用户可以对商品进行。同时还有网上实时新闻报道,动态更新各种最新的学校信息。不仅仅可以方便师生们的购物和交易,同时也使师生能够更加实时的了解学校最新的信息。 4、系统功能 1)前台系统 a.注册 b.登录 c.登出 d.个人资料修改 e.商品展示 f.商品详情浏览 g.搜索商品 h.参与评论 i.确定购买 j.网上新闻展示 2)后台管理系统 a.管理员登录 b.账号管理 c.商品管理 d.购物车管理 e.发表网上新闻 f.评论管理

java课程设计报告_简单图形界面计算器的设计

Java 课程设计 简单图形界面计算器的设计 课程名称 Java程序设计 选题名称简单图形界面计算器的设计 专业 班级 姓名 学号 指导教师 简单图形界面计算器的设计

一、设计任务与目标 本次java程序设计我的设计任务是设计一个图形界面(GUI)的计算器应用程序并且能够完成简单的算术运算。本次任务的基本要求是这个计算器应用程序可以完成十进制的加、减、乘、除、求倒、取余、开方运算,且有小数点、正负号、退格和清零功能。而我要在此基础上添加一项千位符分隔符的功能,即以三位为一级,在输入的一串数字中每三位加入一个逗号,这项功能国际通用,并已经成为惯例,会计记账都用这种方法便于账目核算与管理。 GUI计算器设计的具体目标: 1.完成十进制的加、减、乘、除、求倒、取余和开方运算; 2.有小数点和正负号加入运算; 3.有退格、复位和清零的功能; 4.有千位符分隔符的功能,即在输入的一串数字中每三位加入一个逗号。 二、方案设计与论证 1.设计目标的总体分析 (1)设计目标的需求分析:计算器是现在一个普遍应用的工具,能够解决许多人工所无法计算的数据,节省大量宝贵的时间。 (2)设计目标的功能分析:实现计算器系统的功能,主要有两个功能模块:输入和输出。 (3)设计原则:基于计算器系统要具有适用性广、操作简便等特点,本系统预计要达到以下几个目标:①满足以上的基本功能要求;②能够在常见的计算机及其操作系统上运行。 2.设计的基本思路 利用GUI的界面设计,将整个大设计分为三块,分别是数据的输入,运算符

功能符的控制和数据的输入输出显示。利用Swing控件,数据的输入由0~9这10个按钮来表示,用“+”、“-”、“*”、“/”、“1/x”、“%”、“sqrt”这7个按钮来表示加、减、乘、除、求倒、取余、开方运算,用“.”和“±”这2个按钮来表示小数点和正负号,用“Back”、“CE”和“C”这3个按钮来表示退格、复位和清零的功能,数据的输入输出显示由文本字段来表示。将计算器的总体界面设计好后,再将代码分别写入不同的按钮的源程序中。 我要完成的一项改进,即添加一个拥有千位符分隔符功能的按钮,按下这个按钮能够在输入的一串数字中每三位加入一个逗号并且显示出来。我要在之前的界面设计的基础上多添加一个按钮“$”来表示千位符分隔符,并且将功能代码写入这个按钮的源程序中。 三、程序流程图,程序清单与调用关系 1. 程序流程图:

Java图形用户界面设计

前言 随着Internet的飞速发展,Java技术也得到了越来越广泛的应用。而无论我们是采用J2SE、J2EE还是J2ME,GUI都是不能回避的问题。现在的应用软件越来越要求界面友好、功能强大而又使用简单。而众所周知,在Java中进行GUI 设计相对于其跨平台、多线程等特性的实现要复杂和麻烦许多。这也是很多Java 程序员抱怨的事情。但GUI已经成为程序发展的方向,所以我们也必须了解Java 的GUI设计方法和特点。其实,采用Java提供的布局管理器接口和相应的布局管理类,我们也可以做出相当漂亮的界面来,当然实现起来肯定要比VB麻烦许多。本文试图通过自己的开发经历介绍一些具体的应用实例,希望能给那些曾经象我一样苦闷的Java痴迷者一些帮助。 Java中的布局管理器 2.1 为什么要使用布局 在实际编程中,我们每设计一个窗体,都要往其中添加若干组件。为了管理好这些组件的布局,我们就需要使用布局管理器。比如说,设计一个简单的计算器,或一个文本编辑器等等。这些组件是让JVM 自己任意安排呢?还是按照一定的位置关系进行规范的安排呢?当然应该选择后者。将加入到容器的组件按照一定的顺序和规则放置,使之看起来更美观,这就是布局。在Java中,布局由布局管理器 (LayoutManager) 来管理。那么,我们在什么时候应该使用布局管理器?应选择哪种布局管理器?又该怎样使用布局管理器呢? 如果你写的是GUI程序,在使用AWT/Swing组件时就不应硬性设置组件的大小和位置,而应该使用Java的布局管理器(LayoutManager)来设置和管理可视组件的大小和位置,否则就有可能造成布局混乱。不信,你可以新建一个Frame(或JFrame),通过setBounds()方法往其中添加几个Button(或JButton),一旦你将窗体拉大或缩小时,你会发现组件的排列完全不是按你所预想的那样。为了解决这个问题,即当窗体(或容器)缩放时,组件位置也随之合理调整,我们就需要使用布局管理器。 为此,我们首先要知道Java的布局方式,Java提供的API中有些什么布局管理器,它们的布局特点是什么。 2.2 Java的布局方式 我们都知道,Java的GUI界面定义是由AWT类包和Swing类包来完成的。它在布局管理上采用了容器和布局管理分离的方案。也就是说,容器只管将其他组件放入其中,而不管这些组件是如何放置的。对于布局的管理交给专门的布局管理器类(LayoutManager)来完成。 现在我们来看Java中布局管理器的具体实现。我们前面说过,Java中的容器类(Container),它们只管加入组件(Component),也就是说,它只使用自己的add()方法向自己内部加入组件。同时他记录这些加入其内部的组件的个数,可

相关主题
相关文档 最新文档