相关疑难解决方法(0)

Java Swing:在鼠标悬停时更改背景颜色

我已经实现了一个简单的鼠标监听器,只要鼠标进入组件(JPanel),背景颜色就会改变,只要鼠标离开,它就会恢复.这有一些问题:

  • 有时鼠标移动得太快,以至于不会触发mouseExit事件
  • 如果我的组件有子节点,当鼠标移动到子节点时它会触发mouseExit
  • 如果我将鼠标快速移动到子节点,则不会触发mouseEnter事件

我猜这对于Swing老兵来说很简单.对于如何解决这个问题,有任何的建议吗?我不想使用计时器等......

java mouse swing background mouseout

4
推荐指数
1
解决办法
9072
查看次数

无法在jar文件中播放嵌入的声音

我正在创建一个名为BatteryBeeper的个人用软件.它会提醒我在笔记本电脑充电的时候充电是我设置的提醒.

当电荷达到设定的阈值时,它应该发出声音.

我看了一下答案:声音没有在罐子里播放,我AudioInputStream的构造类似于Jigar Joshi提到的.

但是我得到一个null异常:

java.lang.NullPointerException
    at com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(Unknown Source)
    at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
    at demo.BatteryBeeper.setupSoundPlayback(BatteryBeeper.java:169)
    at demo.BatteryBeeper.<init>(BatteryBeeper.java:41)
    at demo.BatteryBeeper.main(BatteryBeeper.java:35)  
Run Code Online (Sandbox Code Playgroud)

这是加载声音的代码:

public void setupSoundPlayback(){
        try{
            buzzer = AudioSystem.getClip();
            in = AudioSystem.getAudioInputStream(BatteryBeeper.class.
                    getResourceAsStream("sound/buzzer3_x.wav"));
            buzzer.open(in);
        }catch(Exception e){
            e.printStackTrace();
        }

    }  
Run Code Online (Sandbox Code Playgroud)

以下是播放它的代码:

public void playSound(){
        buzzer.start();
    }  
Run Code Online (Sandbox Code Playgroud)

是什么导致了这个问题?

杂项

这是一个常见的Eclipse项目.有一个sound文件夹下面src有波形文件

编辑

在AlexR的回答之后,我改变了路径并得到了一个新的例外:

javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input stream
    at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
    at demo.BatteryBeeper.setupSoundPlayback(BatteryBeeper.java:169)
    at demo.BatteryBeeper.<init>(BatteryBeeper.java:41)
    at demo.BatteryBeeper.main(BatteryBeeper.java:35)
Run Code Online (Sandbox Code Playgroud)

java nullpointerexception javasound embedded-resource

0
推荐指数
1
解决办法
1444
查看次数