使用JSlider更改JAVA卷

使用JSlider更改JAVA卷,java,audio,volume,Java,Audio,Volume,我有一个简单的应用程序,可以在windows中改变音量的问题。我在互联网上找到了一些代码的源代码,经过修改后,它可以工作,但只在我的电脑上。这是因为我的代码不是通用的,因为我指的是一个特定的阵列,它可以控制音量。一般来说,我必须创建代码。这AudioSystem.getMixerInfo()为我创建一个混音器阵列。我如何找到这些阵列中的哪一个是用于计算机扬声器的 以下是代码: public void volumecontrol(){ javax.sound.sampled.Mixer.Info[

我有一个简单的应用程序,可以在windows中改变音量的问题。我在互联网上找到了一些代码的源代码,经过修改后,它可以工作,但只在我的电脑上。这是因为我的代码不是通用的,因为我指的是一个特定的阵列,它可以控制音量。一般来说,我必须创建代码。这AudioSystem.getMixerInfo()为我创建一个混音器阵列。我如何找到这些阵列中的哪一个是用于计算机扬声器的

以下是代码:

public void volumecontrol(){
javax.sound.sampled.Mixer.Info[] mixers = AudioSystem.getMixerInfo();

    Mixer.Info mixerInfo = mixers[4];
    Mixer mixer = AudioSystem.getMixer(mixerInfo);
    Line.Info[] lineinfos = mixer.getTargetLineInfo();

        try {
            Line line = mixer.getLine(lineinfos[0]);
            line.open();
            if(line.isControlSupported(FloatControl.Type.VOLUME)){
                control = (FloatControl) line.getControl(FloatControl.Type.VOLUME);

                control.setValue((float) 0.7);
                int value = (int) (control.getValue()*100);                          

                slider = new JSlider((int)control.getMinimum()*100,(int)control.getMaximum()*100, value);
                slider.setMajorTickSpacing(10);
                slider.setPaintLabels(true);
                System.out.println("Volume:"+control.getValue());                     

                j.add(slider);
                j.pack();
            }
        } catch (LineUnavailableException e) {
            e.printStackTrace();
        }

        slider.addChangeListener(new ChangeListener() {

            @Override
            public void stateChanged(ChangeEvent arg0) {
                control.setValue(slider.getValue()/100f);

            }
        });
    }
谢谢你的回答