快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

88必发手机客户端官网:Swing 中的声音



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

听觉基础常识

Swing 应用一种可插式外不雅和感到(Pluggable Look-and-Feel,PLAF)体系布局。开拓者不必针对不合组件为颜色和字体之类的设置进行硬编码;取而代之的是,组件将从用户界面治理器(User Interface(UI)Manager)哀求这些设置。作为开拓者,您可以奉告 UI 治理器要让用户看到什么样的界面;您可以选择 Windows、Motif 或 Metal 样式等。UI 治理器接下来就可以实际奉告每个组件应该若何显示它自身。对付象按钮这样的组件来说,前景颜色是经由过程设置 Button.foreground 属性88必发手机客户端官网来节制的,如下所示:

anager.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"));

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

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

假如您不爱好某个声音,可以经由过程将其提示名映射到另一个文件来调换它。举例来说,鄙人面的代码中,您将看到“问题(question)”声音被映射到系统供给的“差错(error)”声音文件:

UIManager.put("OptionPane.questionSound", "sounds/OptionPaneError.wav");

这便是在 Swing 法度榜样中播放与预先定义好的操88必发手机客户端官网作关联的听觉提示所涉及的所有内容。

完备示例

为了展示我们刚才描述过的功能,清单 1 中的法度榜样将显示三个单选按钮,让您选择盼望应用三种提示设置中的哪一种。您可以参看图 1 中简单的用户界面。

图 1. 示例利用法度榜样界面

法度榜样还显示了两个显示弹出窗口的按钮。启用后,显示弹出窗口的操作将触发声音提示。请您自己将确认对话框呈现时播放“ 差错”声音文件的代码行标记出来。

清单 1. 声音示例

1 import java.awt.*;

2 import java.awt.event.*;

3 import88必发手机客户端官网 javax.swing.*;

4 public class Audio extends JFrame {

5

6public Audio() {

7super("Auditory Popups");

8setDefaultCloseOperation(EXIT_ON_CLOSE);

9UIManager.put("AuditoryCues.playList",

10UIManager.get("AuditoryCues.defaultCueList"));

11UIManager.put("OptionPane.questionSound",

12"sounds/OptionPaneError.wav");

13JPanel contentPane = (JPanel)this.getContentPane();

14JPanel center = new JPanel();

15ButtonGroup buttonGroup = new ButtonGroup();

16JRadioButton defaultAudio = new JRadioButton("Default", true);

17center.add(defaultAudio);

18buttonGroup.add(defaultAudio);

19defaultAudio.addActionListener(new ActionListener() {

20public void actionPerformed(ActionEvent e) {

21UIManager.put("AuditoryCues.playList",

22UIManager.get("AuditoryCues.defaultCueList"));

23}

24});

25JRadioButton offAudio = new JRadioButton("Off", false);

26center.add(offAudio);

27buttonGroup.add(offAudio);

28offAudio.addActionListener(new ActionListener() {

29public void actionPerformed(ActionEvent e) {

30UIManager.put("AuditoryCues.playList",

31UIManager.get("AuditoryCues.noAuditoryCues"));

32}

33});

34JRadioButton onAudio = new JRadioButton("On", false);

35center.add(onAudio);

36buttonGroup.add(onAudio);

37onAudio.addActionListener(new ActionListener() {

38public void actionPerformed(ActionEvent e) {

39UIManager.put("AuditoryCues.playList",

40UIManager.get("AuditoryCues.allAuditoryCues"));

41}

42});

43contentPane.add(center,BorderLayout.CENTER);

44JButton confirmButton = new JButton("Confirmation Dialog");

45contentPane.add(confirmButton, BorderLayout.SOUTH);

46confirmButton.addActionListener(new ActionListener() {

488必发手机客户端官网7public void actionPerformed(ActionEvent e) {

48int result = JOptionPane.showConfirmDialog(Audio.this,

49"Confirm?");

50if (result == JOptionPane.YES_OPTION) {

51JOptionPane.showMessageDialog(Audio.this, "Confirmed");

52} else {

53JOptionP88必发手机客户端官网ane.showMessageDialog(Audio.this, "Rejected");

54}

55}

56});

57JButton messageButton = new JButton("Message Dialog");

58contentPane.add(messageButton, BorderLayout.NORTH);

59messageButton.addActionListener(new ActionListener() {

60public void actionPerformed(ActionEvent e) {

61JOptionPane.showMessageDialog(Audio.this, "The Message");

62}

63});

64this.pack();

65show();

66}

67public static void main(String args[]) {

68new Audio();

69}

70 }

71

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: