首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

15.2  Swing的特性

PasswordStore展示了Swing应用程序的丰富功能。本节讨论使用Java SE平台的应用程序可用的一般特性,特别介绍Swing工具包。

15.2.1  Swing组件的可视化指导

本节以Java和Windows界面外观显示Swing组件。

1. 基本控件(表15-1)

简单组件主要用于用户输入;它们也可能显示简单状态。

表15-1  基本控件

名    称

Java界面外观

Windows界面外观

JButton

Button image

Button image

JCheckBox

CheckBox image

CheckBox image

JComboBox

Combo box image

Combo box image

JList

List image

List image

JMenu

Menu image

Menu image

JRadioButton

Radio Button image

Radio Button image

JSlider

Slider image

Slider image

JSpinner

Spinner image

Spinner image

JPasswordField

Password field image

Password field image

2. 高度格式化信息的交互性显示(表15-2)

这些组件显示高度格式化的信息,用户可以修改这些信息(如果你选择的话)。

表15-2  高度格式化信息的交互性显示

Java界面外观

Windows界面外观

JColorChooser

Color Chooser Image

Color Chooser Image

JEditorPane和JTextPane

Text pane Image

Text pane Image

JFileChooser

File Chooser Image

File Chooser Image

JTable

Table Image

Table Image

JTextArea

Text Image

Text Image

JTree

Tree Image

Tree Image

3. 不可编辑的信息显示(表15-3)

这些组件专门用来向用户提供信息。

表15-3  不可编辑的信息显示

名    称

Java界面外观

Windows界面外观

JLabel

Label image

Label image

JProgressBar

JSeparator

Separator image

Separator image

JToolTip

Tool tip image

Tool tip image

4. 顶级容器(表15-4)

在任何Swing应用程序中都必须至少有一个这种组件。

表15-4  顶级容器

名    称

Java界面外观

Windows界面外观

JApplet

Applet image

Applet image

JDialog

Dialog image

Dialog image

JFrame

Frame image

Frame image

5. 通用容器(表15-5)

这些通用容器用在大多数Swing应用程序中。

表15-5  通用容器

Java界面外观

Windows界面外观

JPanel

Panel image

Panel image

JScrollPane

(续)

Java界面外观

Windows界面外观

Scroll pane image

Scroll pane image

JSplitPane

Split pane image

Split pane image

JTabbedPane

Tabbed pane image

Tabbed pane image

JToolBar

ToolBar image

ToolBar image

6. 专用容器(表15-6)

这些专用容器在UI中扮演特殊角色。

表15-6  专用容器

Java界面外观

Windows界面外观

 

JInternalFrame

 

Internal frame image

Internal frame image

 

JLayeredPane

 

Layered pane image

Layered pane image

 

JRootPane

 

15.2.2  可插拔的界面外观

Swing工具包允许你决定如何配置应用程序的界面外观。如果你没有指定界面外观,Swing UI管理器则决定使用哪一种。设置界面外观的选项包括:

l 让Swing UI管理器进行选择。如果程序没有指定特定的界面外观,Swing UI管理器检查用户是否指定了首选项。如果没有指定首选项或者首选项不可用,则使用默认的界面外观。默认的界面外观由JRE的提供者决定。对于Sun公司提供的JRE,就使用Java界面外观(称为Metal)。Java界面外观适用于所有平台。

l 使用本机平台的界面外观。如果应用程序运行在Microsoft Windows XP计算机上,则使用Windows界面外观。在Mac OS平台上,使用Aqua界面外观。在UNIX平台上(比如Solaris或者Linux),根据用户的桌面选择决定使用GTK+界面外观,还是CDE/Motif界面外观。

l 指定特定的界面外观。Swing发布了4种界面外观:Java(也称为Metal)、Microsoft Windows、GTK+和CDE/Motif。GTK+界面外观要求指定一个主题,并且有很多可以在因特网上免费下载。

l 使用Synth包创建你自己的界面外观。

l 使用外部提供的界面外观。

如图15-4到图15-8所示,PasswordStore有三种界面外观可供选择。感谢Incors提供Alloy和Synthetica界面外观。

This is a picture of the PasswordStore demo in the Java look and feel.

This is a picture of the PasswordStore demo in the Windows look and feel.

图15-4  Java界面外观

图15-5  Windows界面外观

This is a picture of the PasswordStore demo in the CDE/Motif look and feel.

This is a picture of the PasswordStore demo in the Alloy default look and feel.

This is a picture of the PasswordStore demo in the Synthetica look and feel.

图15-6  CDE/Motif界面外观

图15-7  默认的Alloy界面外观

图15-8  Synthetica界面外观

15.2.3  拖放和数据传输

Swing工具包支持在同一个Java应用程序内的组件之间,在不同Java应用程序之间,以及在Java和本机应用程序之间传输数据。可以通过拖动方式传输数据,或者通过剪贴板使用剪切、复制和粘贴传输数据。

1. 拖放

可以很容易地启用很多Swing组件的拖放支持(有时候只需要一行代码)。例如,启用JTable(Swing的表组件)的拖放、复制和粘贴支持非常简单。需要提供的只是表示选择的数据和如何从剪贴板获得数据——就这么简单!

2. 剪切、复制和粘贴

大多数基于文本的组件(比如编辑器板和文本字段)都支持剪切/复制和粘贴到组件外。当然,需要创建菜单项并且“连接”到适当的操作。其他组件(比如列表和树)通过很少量的处理就可以支持剪切、复制和粘贴。

PasswordStore支持各种方式的数据传输:

l 列表和树视图中的文本支持剪切、复制和粘贴。

l Details面板中的文本字段、Filter文本字段和Notes文本板支持剪切/复制、粘贴和拖放。

l Details面板中的公司图标区域接受拖放过来的图像(jpg、png、gif或者tif)。

15.2.4  国际化和本地化

国际化(internationalization)过程是设计应用程序,使用户可以使用他的文化首选项运行应用程序,而无需修改或者重新编译代码。这些文化首选项统称为地区(locale),包括(但是不限于)语言、货币格式、时间和日期格式以及数字格式。

国际化程序被设计为把文本元素(比如状态消息和GUI组件标签)存储在源代码之外的资源包中,并且动态获得。把地区特定的信息和代码分离,是允许程序用不同语言和不同首选项运行且无需重新编译的途径。

本地化(localization)过程把文本翻译为特定语言,并且添加任何地区特定的组件。把应用程序本地化为一种语言,然后在这个地区运行应用程序时,Swing从资源包获得本地化的字符串,并且布局管理器相应地改变组件的大小。

例如,使用英语的人编写了一个应用程序,遵守国际化规则;然后,应用程序被本地化为日语和西班牙语。当用户把语言系统首选项(Language System Preference)集合设置为日语并且运行应用程序时,Swing会探测到这一情况。当应用程序出现时,菜单、标签、按钮等都显示日语文本,并且相应地改变组件的大小。如果这个用户退出程序,把语言系统首选项设置为西班牙语,然后重新启动应用程序,它就显示西班牙语,并且按照新的字符集相应地改变组件大小。

Swing的布局管理器知道地区设置如何影响UI——不必为每个地区创建新的布局。例如,在从右到左书写文字的地区,布局管理器会按照相同的方向安排组件(如果指定的话)。也支持Bidi文本(混合方向的文本,例如希伯来人和阿拉伯人使用的)。

设计每个程序时都应该时刻考虑到国际化问题:GUI组件标签、状态消息、货币值、日期、电话号码和地址格式都不应该硬编码到程序中。程序经过国际化之后,语言专家可以在以后进行实际的翻译工作,无需任何重新编译处理。

如图15-9和图15-10所示,PasswordStore被本地化为日语和阿拉伯语。

This is a picture of the PasswordStore demo in Japanese.

This is a picture of the PasswordStore demo in Arabic.

图15-9  使用日语的PasswordStore

图15-10  使用阿拉伯语的PasswordStore

文本框:  
图15-11  带有工具提示的PasswordStore

15.2.5  可访问性

辅助技术使永久或者临时残疾的用户也可以使用计算机。这包括范围很广的技术和设备——语音界面、放大镜、屏幕阅读器、Closed Caption字幕、键盘增强等。在很多国家和地区,包括美国、澳大利亚、加拿大和欧盟,都有要求程序功能平滑使用辅助技术的法律。

所有Swing组件都内置了一定程度的可访问性,但是可以遵照某些简单原则达到完全可访问性。例如,尽可能使用工具提示、键盘替换方式和图像的文本描述。

PasswordStore演示遵守可访问性原则。在图15-11中,你能看到工具提示文本的例子。

文本框:  
图15-12  点击URI,它会在默认浏览器中打开

15.2.6  和桌面集成

Java SE 6引入的Desktop API使Java应用程序可以无缝地和桌面集成。支持三种类型的集成:

l 启动主机系统的默认浏览器打开指定的统一资源标识符(Uniform Resource Identifier,URI)的能力。

l 启动主机系统的默认电子邮件客户程序的能力。

l 启动应用程序打开、编辑或者输出与这些应用程序相关联的文件的能力。

在PasswordStore演示程序的Notes文本板中可以看到这种情况。点击图15-12中显示的链接,就会在默认浏览器中打开指定的URI。

关于更多信息,请参阅Using the Desktop API in Java SE 6一文。

15.2.7  系统托盘图标支持

一些平台(比如Microsoft Windows)的桌面包含系统托盘(system tray),如图15-13所示。

System Tray on Windows XP

图15-13  Windows XP系统上的系统托盘

在Microsoft Windows系统中,它被称为“工具栏状态区域(Taskbar Status Area)”;在Gnome系统中是“通知区域(Notification Area)”;在KDE中是“系统托盘(System Tray)”。不管它叫什么,系统托盘由所有应用程序共享。

在支持系统托盘的系统上,应用程序可以把小型图标(称为托盘图标(tray icon))插入系统托盘。这个图标可以用于通知用户应用程序状态的改变,或者需要采取特别操作。点击托盘图标可以打开应用程序窗口。也可以把弹出菜单和工具提示附加到托盘图标。

Java SE 6中添加了系统托盘支持。关于更多信息,请参阅New System Tray Functionality in Java SE 6一文。

问题和练习:图形化用户界面

问题

1.   Swing支持多种界面外观吗?

2.   是或否:Java界面外观是唯一一种可以跨越所有平台工作的界面外观。

3.   是或否:Swing的撤销框架(Undo Framework)支持撤销(和重做)数量不限的操作。

4.   Swing的列表组件(JList)只能显示文本吗?

5.   提供开箱即用的重做支持的Swing组件是什么?

6.   Java应用程序能够和本机桌面组件集成吗?

7.   可以在Web上部署Swing应用程序吗?

答案

可以在以下位置找到“问题”和“练习”的答案:

tutorial/ui/features/QandE/answers.html

 

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论