我希望我的Java应用程序在播放alert 声音时遵守macOS设置为System Settings... › Sound › Sound effects.

例如,只要有人将光标放在jTextfield中最左边的位置按下backspace,程序就会播放用户配置的"alert 声".

在我的应用程序的其他功能中播放相同的alert 声音也有类似的需求.但我还没有找到一个库,可以让我的应用程序在适当的设备上以适当的音量播放系统的适当的"alert 声".

我希望我的应用程序遵守以下MacOS系统设置:

  • alert 声(声音名称)
  • 通过(设备名称)播放音效
  • 音量提醒(滑块设置)

我怎么能这样做呢?

推荐答案

我已经在macOS上试用了Toolkit.beep,它似乎做了你想要的.我还没有验证JTextField调用Toolkit.beep,但它似乎正在调用它.你可以看看openjdk源代码,可能会得到一个更好的 idea .

在Windows上,JTextField似乎使用默认蜂鸣声.工具箱.哔声也是.

只要默认的工具包可以使用(这是给我的),你可以在你的应用程序中需要提醒用户的地方放置以下内容.

Toolkit tk = Toolkit.getDefaultToolkit();
tk.beep();

以下是我的MCV示例.

import java.awt.event.*;
import java.awt.BorderLayout;
import java.awt.Toolkit;
import javax.swing.*;

public class Alert extends JFrame {
   private Toolkit tk = Toolkit.getDefaultToolkit();
   public Alert () {
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      JTextField tf = new JTextField();
      JButton bbeep = new JButton(new AbstractAction() {
         public void actionPerformed (ActionEvent e) {tk.beep();}
      });
      setLayout(new BorderLayout());
      getContentPane().add(tf, BorderLayout.NORTH);
      getContentPane().add(bbeep, BorderLayout.SOUTH);
      pack();
      setVisible(true);
   }

   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() { new Alert(); }
      });
   }
}

Java相关问答推荐

Java JAR环境(JRE)是否支持模块?

Javascript更新alert 可扩展内容样式与CSS—按钮更多/更少

在现代操作系统/硬件上按块访问数据值得吗?

Android Studio—java—在onBindViewHolder中,将断点和空白添加到BackclerView中

呈现文本和四舍五入矩形时出现的JavaFX窗格白色瑕疵

什么是Java原子属性的正确getter和setter

为什么在maven中,getLast方法不适用于List?

通过移动一个类解决了潜在的StubbingProblem.它怎麽工作?

PDFBox未加载内容

JOOQ中的子查询使用的是默认方言,而不是配置的方言

如何在代码中将行呈现在矩形前面?

Java泛型类方法的静态返回类型是否被类型擦除?

Quarkus:运行时出现EnumConstantNotPresentException

如何在SWT菜单项文本中保留@字符

判断重复的两个二维表算法?

在Java中将对象&转换为&q;HashMap(&Q)

Maven-Dependency-Plugin 3.6.+开始查找在依赖关系:分析目标期间找到的新的使用的未声明依赖关系

不能在 map 上移除折线

没有Google Play服务,Firebase Auth无法工作

什么是;u〃;平均值;jdku;在java开发工具包中?