快速业务通道

Merlin的魔力: Swing中的声音 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20

Merlin的魔力: Swing中的声音

时间:2011-02-02 IBM John Zukowski

J2SE 版本 1.4 中新增了一项有趣的 Swing 功能。Swing 控件现在可以提供听觉反馈来对特定事件作出响应,不过缺省情况下这项功能是禁用的。新增的这项功能有助于 Swing 控件更好地模仿系统本地操作系统的控件的行为。

听觉基本知识

Swing 使用一种可插式外观和感觉(Pluggable Look-and-Feel,PLAF)体系结构。开发者不必针对不同组件为颜色和字体之类的设置进行硬编码;取而代之的是,组件将从用户界面管理器(User Interface(UI)Manager)请求这些设置。作为开发者,您可以告诉 UI 管理器要让用户看到什么样的界面;您可以选择 Windows、Motif 或 Metal 样式等。UI 管理器接下来就可以实际告诉每个组件应该如何显示它自身。对于象按钮这样的组件来说,前景颜色是通过设置 Button.foreground 属性来控制的,如下所示:

UIManager.put("Button.foreground", Color.red);

在这里, Button.foreground 为用户界面属性名,而 Color.red 代表特定的设置。改变了设置之后,所有新的按钮的前景颜色都将是红色。(也有方法可以改变以前创建的按钮的前景颜色。)虽然不同的预置外观和感觉为这些设置提供了缺省值,您还是可以重设它们。

在 J2SE 1.4 下,您可以用类似的方式来启用听觉反馈。您只要了解 UI 属性名和合适的设置就可以了。属性在这里被命名为 AuditoryCues.playList ,设置则为听觉提示名称的一个 String 数组。UI 管理器接下来将把这些名称映射到特定操作发生时将播放的声音文件。

下面将给出系统提供的外观和感觉中所支持的声音列表。它们的名称本身就颇具解释性。

CheckBoxMenuItem.commandSound

InternalFrame.closeSound

InternalFrame.maximizeSound

InternalFrame.minimizeSound

InternalFrame.restoreDownSound

InternalFrame.restoreUpSound

MenuItem.commandSound

OptionPane.errorSound

OptionPane.informationSound

OptionPane.questionSound

OptionPane.warningSound

PopupMenu.popupSound

RadioButtonMenuItem.commandSound

提供给 AuditoryCues.playList 属性的 String 名称数组就是这样 ― 一个事件 名称的集合。UI 管理器负责将这些名称映射到特定于外观和感觉的声音。

您可以从这些名称中手动地创建一个真正希望支持的事件名称的数组,不过这并不是必需的。值得庆幸的是,对于常用的组来说已经有两个系统定义过的设置可以使用,还有一个设置可以用于 Metal 外观和感觉。

这些设置提供了一个查找键 AuditoryCues.allAuditoryCues ,它允许您从 UI 管理器查找适用于所有声音的数组。一旦您查找了这个数组,就可以用 AuditoryCues.playList 键将其存储在 UI 管理器中,如下所示:

UIManager.put("AuditoryCues.playList", UIManager.get("AuditoryCues.allAuditoryCues"));

Merlin的魔力: Swing中的声音(2)

时间:2011-02-02 IBM John Zukowski

您还可以使用另外两个查找键: AuditoryCues.noAuditoryCues ,即无声,还有 AuditoryCues.defaultCueList ,它只为四种 OptionPane 设置播放声音提示,专门用于 Metal 外观和感觉。

一旦您改变了 AuditoryCues.playList 设置,就可以使用一组新的声音提示了。当特定操作发生时,UI 管理器将检查播放列表,寻找与该操作关联的键。UI 管理器接下来将使用这个键来查找要载入并播放的声音文件。如果提示(cue)数组中不存在任何键,就不会播放任何声音。

如果您不喜欢某个声音,可以通过将其提示名映射到另一个文件来替换它。举例来说,在下面的代码中,您将看到“问题(question)”声音被映射到系统提供的“错误(error

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号