JSlider
으로 내 컴퓨터의 주 스피커를 GUI 응용 프로그램에서 제어 할 수있게하려는 Java
의 테스트 프로그램을 작성 중입니다. AudioSystem 클래스의 this 페이지와 컨트롤의 this 페이지를 읽었습니다. 믹서를 통해 포트 나 라인을 얻은 다음 그 라인이나 포트에 컨트롤을 설치해야한다는 것을 이해합니다. 볼륨을 제어하고 있으므로 FloatControl
을 구현해야합니다. 내 프로그램은 아무 문제없이 컴파일되지만, 실행하고 JSlider를 조정하면 catch
절 아래에 오류 메시지가 전송됩니다. 나는 위 프로그램 예외 전자 인쇄를 실행하면FloatControl을 Java Sound API와 올바르게 사용하려면 어떻게해야합니까?
import java.awt.BorderLayout;
import java.io.IOException;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.FloatControl;
import javax.sound.sampled.Mixer;
import javax.sound.sampled.Port;
import javax.swing.JFrame;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class speakerWork2
{
public static void main(String [] args)throws IOException
{
Frame speaker = new Frame();
}
}
class Frame extends JFrame
{
JSlider mainVolume = new JSlider(JSlider.VERTICAL,0,100,50);
public Frame()
{
super();
setVisible(true);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new BorderLayout());
setSize(100, 450);
setLocation(300,200);
add(mainVolume);
mainVolume.addChangeListener(new mainVolumeHandler());
}
public class mainVolumeHandler implements ChangeListener
{
int sliderVal = mainVolume.getValue();
public void setValue(FloatControl sliderVal)
{
}
public void stateChanged(ChangeEvent f)
{
Port SPEAKER;
FloatControl volCtrl;
try
{
Mixer mixer = AudioSystem.getMixer(null);
SPEAKER = (Port)mixer.getLine(Port.Info.SPEAKER);
SPEAKER.open();
volCtrl = (FloatControl) SPEAKER.getControl(
FloatControl.Type.VOLUME);
}
catch (Exception e)
{
System.out.println("Failed trying to find SPEAKER"
+ " VOLUME control: exception = " + e);
}
}
}
}
: 나는 믹서, 선 및 포트에 대한 내 컴퓨터를 조회 할 때 나는 다음과 같은 얻을
java.lang.IllegalArgumentException: Line unsupported: SPEAKER target port
이
내 테스트 프로그램입니다 내 연사를위한 결과 ...mixer name: Port Speakers/Headphones (IDT High Definition Audio CODEC)
Line.Info: SPEAKER target port
volCtrl.getValue() = 1.0
무엇이 잘못 되었습니까? 그리고 나는 무엇을해야합니까? 자기?
코드 포맷을 사용하는 방법을 배우십시오. : –
그 앤드류 게시물을 편집 해 주셔서 감사합니다. "enter code here"함수를 사용하고 있었지만, 코드에 붙여 넣을 때마다 올바르게 나오지 않았습니다. 최선을 다했습니다. –
코드 블록의 경우 일반적으로 1) 코드를 붙여 넣습니다. 2) 코드 블록을 선택하십시오. 3) 코드 단추를 누르십시오. *** 선택한 블록은 '코드'효과를 내기 위해 각 줄의 4 칸만큼 들여 쓰기되어야합니다. 코드 블록 앞에는 전체 빈 줄이 있어야합니다. 때로는리스트의 끝 부분에 올바르게 포맷되지 않지만, 수평 라인에'---'를 삽입하여 수정할 수 있습니다. 아마도 첫 번째 시도가 당신만큼이나 성공하지 못했고 그럴 가능성이 더 높기 때문에 버튼을 클릭 한 경험이별로 없습니다. ;) –