import javax.swing.*;
import java.awt.event.*;
import java.net.URL;
public class KeySoundDemo extends JFrame {
private AudioClip keySound;
public KeySoundDemo() {
// 1. 加載音效 (項目 resources 目錄下的 click.wav)
URL soundUrl = getClass().getResource("/click.wav");
if (soundUrl != null) {
keySound = JApplet.newAudioClip(soundUrl);
}
// 2. 添加鍵盤監聽
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (keySound != null) {
keySound.play(); // 異步播放,不阻塞主線程
}
// 可根據 e.getKeyCode() 播放不同音效
}
});
setFocusable(true); // 關鍵:組件必須可獲取焦點才能收到鍵盤事件
requestFocusInWindow();
setSize(400, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(KeySoundDemo::new);
}
}
將 `click.wav` (建議 44.1kHz, 16bit, 單聲道, <1秒) 放入 `src/main/resources/` 目錄,Maven/Gradle 會自動打包進 JAR。