Java 如何在打开新JFrame时停止音频
我做了一个安全警告,如果用户输入错误的密码超过5次,那么它将弹出一个框架,要求用户解锁,该框架也将继续循环的警告声。用户解锁后,它将跳回登录框。我的问题是,解锁后,系统跳回登录画面,但声音仍在运行。为什么? 这是我的按钮代码跳回登录框Java 如何在打开新JFrame时停止音频,java,loops,audio,Java,Loops,Audio,我做了一个安全警告,如果用户输入错误的密码超过5次,那么它将弹出一个框架,要求用户解锁,该框架也将继续循环的警告声。用户解锁后,它将跳回登录框。我的问题是,解锁后,系统跳回登录画面,但声音仍在运行。为什么? 这是我的按钮代码跳回登录框 Staff s = new Staff(); String id = m_id.getText(); String pass = m_pass.getText(); String position = "Manager"
Staff s = new Staff();
String id = m_id.getText();
String pass = m_pass.getText();
String position = "Manager";
try{
String sql = "Select * from Staff Where Position='"+position+"'";
pst=conn.prepareStatement(sql);
rs=pst.executeQuery();
while(rs.next()){
String add = rs.getString("Staff_ID");
s.setStaff_ID(add);
String add2 = rs.getString("Password");
s.setPassword(add2);
}
if((s.getStaff_ID().equals(id)) && (s.getPassword().equals(pass))){
warning(clip);
dispose();
new login().setVisible(true);
}
}catch(Exception e){
JOptionPane.showMessageDialog(null,e.getMessage());
}
我用这个来循环声音
private void warning(){
try {
URL url = this.getClass().getClassLoader().getResource("sound/aleart.wav");
AudioInputStream audioIn = AudioSystem.getAudioInputStream(url);
Clip clip = AudioSystem.getClip();
clip.open(audioIn);
clip.loop(Clip.LOOP_CONTINUOUSLY);
}catch(Exception ex){
JOptionPane.showMessageDialog(null, ex.getMessage());
}
}
我的GUI名称是WarningLogin,我在这里调用warning()
public WarningLogin() {
initComponents();
warning();
}
首先
clip
需要是类的实例字段
public class ... {
private Clip clip;
然后当你创建它时,你需要引用这个值
//Clip clip = AudioSystem.getClip();
clip = AudioSystem.getClip();
现在,我可能会使用一个
WindowListener
,当windowClosing
事件发生时,尝试调用clip.stop()
,因为我是个学究,clip.close()
你尝试过停止或关闭clip吗?我以前尝试过,但可能放错地方了??我应该把它放在哪里?谢谢,它很管用。然后我输入clip.stop();在方法中,我打开了登录框和音频停止…再次感谢您,很高兴知道它工作了…因为我实际上从未使用过音频系统
:P