У меня есть код для звука, который петли и воспроизводит мой графический интерфейс, содержащийся в основном классе. Главный код класса:Остановить звук с событием кнопки
public class SoundTest {
public static Clip clip;
public static Mixer mixer;
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
StartGUI GUI = new StartGUI();
GUI.setVisible(true);
Mixer.Info[] mixInfos = AudioSystem.getMixerInfo();
mixer = AudioSystem.getMixer(mixInfos[0]);
DataLine.Info dataInfo = new DataLine.Info(Clip.class, null);
try{
clip = (Clip)mixer.getLine(dataInfo);
}
catch(LineUnavailableException l){
l.printStackTrace();
}
try{
URL soundURL = Main.class.getResource("/soundtest/8-Bit-Noise-1.wav");
AudioInputStream audioStrim = AudioSystem.getAudioInputStream(soundURL);
clip.open(audioStrim);
}
catch(LineUnavailableException l){
l.printStackTrace();
}
catch(UnsupportedAudioFileException e){
e.printStackTrace();
}
catch (IOException i){
i.printStackTrace();
}
clip.start();
do{
System.out.println(clip.isActive());
try{
clip.loop(Clip.LOOP_CONTINUOUSLY);
Thread.sleep(50);
}
catch(InterruptedException ie){
ie.printStackTrace();
}
}while(clip.isActive());
}
public void stop() {
clip.stop();
}
}
В моем классе JFrame я хочу, чтобы событие кнопки, которая остановит звук, я попытался сделать метод остановки() в главном классе, чтобы использовать он в кнопке, но пока он не работает.
код JFrame:
public class StartGUI extends javax.swing.JFrame {
SoundTest q;
/**
* Creates new form SoundTestGUI
*/
public StartGUI() {
initComponents();
}
private void SoundBtnActionPerformed(java.awt.event.ActionEvent evt){
// TODO add your handling code here:
q.stop();
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new StartGUI().setVisible(true);
}
});
}
}
Как это работает? Любые исключения бросаются? – Vineet
Я предполагаю, что SoundTest отлично работает сам по себе. Я предполагаю, что когда вы написали StartGUI, вы намерены запустить программу с помощью метода main() в StartGUI вместо SoundTest. Звучит ли звук, когда вы это делаете? Часть трудности в оказании помощи также заключается в том, что мы не видим кода для кнопки или того, как вы присоединяете слушателя к Button. Кроме того, код, запускающий SoundTest, должен, вероятно, должен быть в конструкторе или в его собственном методе, а не в основном методе. Это поможет с ясностью. –