0

如果用户输入错误密码超过5次,我会发出安全警告,然后它会弹出一个要求用户解锁的框架,并且框架也会继续循环警告声音。用户解锁后,会跳转回登录框。我的问题是解锁后系统跳回登录框但声音仍在播放。为什么?

这是我的按钮代码跳回登录框架

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();
}
4

1 回答 1

0

首先clip需要是你类的实例字段......

public class ... {

   private Clip clip;

然后当你创建它时,你需要引用这个值......

//Clip clip = AudioSystem.getClip();
clip = AudioSystem.getClip();

现在,我可能会使用WindowListenerand 当windowClosing事件引发时,尝试调用clip.stop(),因为我很迂腐,clip.close()

于 2013-07-22T04:02:28.240 回答