首页
会员中心
到顶部
到尾部
计算机

Java 2 用户界面设计

时间:2020/10/14 13:33:26  作者:  来源:  查看:0  评论:0
内容摘要: -ms-text-justify: inter-ideograph;">Java Speech API 规范(Java Speech API Specification,JSAPI) Java Speech API 程序员指南 Java Speech...

-ms-text-justify: inter-ideograph;">Java Speech API 规范(Java Speech API SpecificationJSAPI 

Java Speech API 程序员指南 

Java Speech API 语法格式规范(Java Speech API Grammar Format SpecificationJSGF

Java Speech API 标记语言规范(Java Speech API Markup Language SpecificationJSML

这个API没有Sun公司的参考实现,但是有许多第三方实现,包括Speech for Java(可以从IBM alphaWorks获得),它使用ViaVoice来支持语音命令识别、听写和文本到语音的合成。

 

 

,

Java 2 用户界面

 

自从Java语言出现的早期到现在,图形和用户界面功能已取得了飞跃式的发展。Java2平台包含一个复杂的跨平台的用户界面体系结构,它的组成包括众多的高级组件、一个先进的,功能丰富的,独立于设备的图形系统和许多的多媒体扩展。在本文中,我们将探究这个进步,详细审视当前1.3版本的功能,最后展望一下未来,看看发行版1.4会提供些什么。请点击文章顶部或底部的讨论,在论坛与本文作者和其他读者分享您对本文的看法。

Java2平台发行之前,抽象窗口工具包(Abstract Window ToolkitAWT)是Java平台的图形功能的范围。例如Swing等各种技术都是作为可选的扩展被引入的。在Java2平台上,这些扩展中的大部分都可以在平台的核心中找到它们的一席之地,成为Java基础类(Java Foundation ClassesJFC)的一部分。JFC指的是包含在Java2平台内的一整套图形和用户界面技术,包括AWTSwing等。在本文中,我们将讨论JFC的每个主要组件,并讨论一些可选的扩展。

JFC的核心:Swing

Swing是一个带有一套丰富组件的GUI工具包,它组成了JFC的用户界面功能的核心部分。它不仅是AWT所提供的组件的替代品,并且在这些组件的基础上有了很大进步。

当集成有优先权时

JDK首次发行时,与本机平台的集成被认为具有优先权,于是AWT提供了一些组件,这些组件使用各平台的本机组件(在Java编程术语中,这些被称为重量级组件)来实现。例如,在UNIX平台上,java.awt.Button类是用窗口小部件Motif PushButton实现的。

相同的Java应用程序在每个平台上都有不同的外观,但本意是不同的实现在功能上是等同的。当然,这也是问题开始的地方。在简单的界面里,这种等同是真的。但随着复杂性的增加,情况就不一样了,这只是因为组件的不同,而且在某些情况下,不管修正了多少错误,并且AWT的部件被重写了多少次,它们总会表现得有一点不同。

由于将优先权赋予集成而产生的另一个问题是功能性问题。AWT只提供了有限的一套组件,是因为最小公分母方法只有当一个特殊的组件或功能在每个平台上都可用的时候才能够被提供。一个典型的示例就是鼠标键。在以前的JDK1.0.2中,是无法区分鼠标键的点击的,因为Macintosh只有一个鼠标键,所以其它的每个平台都要表现得好像自己也只支持一个鼠标键一样。

语言自身已经变得不只是一种平台了,GUI也正在朝着在所有平台上都有相同的外观和行为这种方向转变。为了实现这个目标,本机组件必须尽量地丢弃。但是,显然一些本机代码还是必需的。如果不包含X System Window 的调用,您就不能在UNIX上显示一个窗口。

现在来看一下Swing,它使用AWT的一个子集来实现这个目标,这个子集包括基本画图操作和java.awt包中的某些类(包括 ContainerWindowPanelDialog  Frame)。

最好的方法

Swing没有完全遵循Java语言作为一个平台的路线。相反,它通过提供一个可以返回本机平台的桥梁,把两种方法的精华部分结合起来了。

建立这个桥梁的机制被称为 可插式Look-and-Feel(它很接近主题的概念,在linux社区中非常流行)。每一个Swing组件都有一个自己的功能模型和一个独立的外观(look-and-feel),这可以预先设置或在运行时更改。

SwingWindows平台和Motif平台分别提供一个Java look-and-feel(以前称为Metal),同时为Macintosh平台提供一个Java look-and-feel(作为额外选项)。平台的 look-and-feel不像AWT一样使用平台的本机组件。相反,它们使用轻量级组件,有和本机组件一样的外观。这对于功能性来说是好的,但在外观上或行为上总有一些不同,所以复杂的界面永远不会和使用本机组件的界面完全相同。

另外,您可以制作自己的look-and-feel。当您为高度专门化的应用程序制作一个 look-and-feel,或为一系列应用程序提供一个共同的look-and-feel时,这是一种强大的功能

独立于平台的拖放

JDK1.1增加了一个通用机制,这种机制放在java.awt.datatransfer包中,实现了应用程序之间和应用程序内部的数据传输,以及对系统剪贴板的操作能力。

Java2版本引入了java.awt.dnd包。此包建立在数据传输的机制上,提供了拖放功能,这些功能可以在一个单独的Java应用程序内或两个Java应用程序之间以一种平台无关的方式执行。为了集成本机平台的拖放功能,它也可以以一种平台相关的方式运行。 

使用拖放(Drag and DropDNDAPI很具有挑战性,因为它要操作在很高的抽象度上来支持它工作的不同方式,同时也因为它被设计成操作被java.awt.datatransfer.Transferable接口所指定的任意数据类型。让我们看一个示例。

从简单到先进:Java 2D

Java2平台之前,语言中的图形功能相当简单,仅限于单像素厚度的实线;少数几个几何图形(如椭圆、弧和多边形);和基本的画图功能。随着Java 2D API(它包含一个真正的功能集)的出现,所有的一切都改变了。

这个API的核心是由java.awt.Graphics2D 类提供的,该类是java.awt.Graphics的一个子类。API 的其它部分由java.awt层次结构中的其它包提供,包括java.awt.colorjava.awt.fontjava.awt.geom

java.awt.Graphics2D

这个类是java.awt.Graphics(该类在 Java 2 发行前就提供图形功能)的一个子类。这样安排的原因是:向后兼容。组件的着色还是通过调用它们的paint()方法,它使用一个Graphics对象。

尽管在语言的当前版本中,这个对象真是一个Graphics2D对象。这意味着,paint()方法可以将Graphics对象作为一个Graphics对象使用(使用旧的画图方法),或者将其强制转换成Graphics2D对象。如果使用第二种选择,就可以使用2D API的所有附加功能。

java.awt.geom

java.awt.geom包提供一些有关二维几何的类,如Arc2DLine2DRectangle2DEllipse2DCubicCurve2D。其中每一个都是抽象类,他们都是两个名为DoubleFloat的非抽象内部类(它们是抽象外部类的子类)。

这些类允许各种几何图形建立在双精度或浮点精度的坐标系上。例如,newEllipse2D.Float(x,y,w,h)将在(x,y)点上构造一个以宽为w、高为h的矩形为边界的椭圆,其中xywh都为浮点值。

在这个包里还有AffineTransform类,它是组成2D API的核心元素。仿射转换指的是平行线在转换后还保持平行。这种类型的转换示例包括如下的操作:平移、旋转、缩放、剪切或者这些操作的组合。每一个转换都可以用一个3x3的矩阵来表示,该矩阵规定转换的源点和目标点之间的映射。

AffineTransform类的实例可以直接从一个浮点值的矩阵中创建,尽管通常情况下是通过规定一个或多个平移、旋转、缩放或剪切操作来创建。多数情况下是使用双精度值,并且角度是用弧度来度量的(而不是 Arc2D 类中使用的度)。

文本着色

Java 2D API的文本功能也相当强大。它们包括:

使用抗锯齿处理和微调(hinting)以达到更好的输出质量

可以使用系统安装的所有字体 

可以将对图形对象的操作(旋转、缩放、着色、剪切等等)应用到文本上。

支持向字符串添加内嵌属性(如字体、尺寸、深浅,甚至图像)

支持双向文本(启用从右到左的字符顺序,就象您在阿拉伯语和希伯来语中可能遇到的一样) 

第一光标和第二光标能够浏览同时包含从右到左和从左到右字符顺序的文本。 

先进的字体度量功能,超过旧的java.awt.FontMetrics类中的相应功能 

排版功能可以实现单词换行和调整多行文本 

多媒体选项:Java Media APIJava 媒体 API

Java Media API是一套涵盖广泛的多媒体技术领域的资源。其中,如2D API和声音API是核心J2SE平台的一部分;其余的是目前可选的扩展,不过其中的一些技术在将来无疑会进入核心。这个领域的其它API还有Java 3DAdvanced Imaging(高级图像处理)、Image I/O(图像 I/O)、Java Media FrameworkJMFJava 媒体框架)和Speech(语音)。

Java 3D

Java 3D API提供了一套面向对象的接口,支持一种简单的、高级的编程模型,让开发人员可以构建、着色和控制 3D 对象的行为和可视环境。

这个API包括一个详细的规范文档和javax.media.j3djavax.vecmath包的实现。

Advanced Imaging

这个规范所涵盖的操作将提高用户处理图像的能力。它包括的操作有对比度增强、剪切、缩放、几何弯曲和频率范围处理。

这种类型的功能可应用于各种领域,如天文学、医学图像处理、科学目视表示、气象学和摄影。

Image I/O

这种API定义了一种可读/写不同格式图像的可插式框架。这种新的API正在由 Java Community Process设计。

Java Media FrameworkJMF

JMF是一种API,可以将音频、视频和其它基于时间的媒体整合到Java应用程序和applet中。这个可选的包扩展了J2SE平台的多媒体功能。

Speech

Java Speech API允许开发人员将语音技术整合到Java applet和应用程序的用户界面中。这种API规定一个跨平台的接口来支持命令控制识别器、听写系统和语音合成器。

这个综合 API 被分成几个规范:

  



相关评论
广告联系QQ:45157718 点击这里给我发消息 电话:13516821613 杭州余杭东港路118号雷恩国际科技创新园  网站技术支持:黄菊华互联网工作室 浙ICP备06056032号