簡體   English   中英

Java jLayer應用程序在播放歌曲時凍結

[英]Java jLayer application freezes while playing song

我對jLayer有問題。 我有一個用於啟動歌曲的代碼按鈕:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {        
    try {
        Player prehravac;
        FileInputStream buff = new FileInputStream(Okno.filename);
        prehravac = new Player(buff);
        prehravac.play();
        if (prehravac != null) {
            prehravac.close();
            this.dispose();
        }
    } catch(Exception e) {

    }
}                                    

當我單擊此按鈕時,它開始播放歌曲,但整個應用程序凍結,我無法單擊任何東西。 歌曲結束后,就可以了,我可以再次單擊其他組件。

有人可以幫我嗎? :) 謝謝

發生這種情況是因為歌曲的播放發生在與GUI或更具體地與EDT相同的線程中。 因此,在播放歌曲時,GUI不響應。 要解決此問題,請執行以下操作:

new Thread(){
  run(){
    //Your play code
  }
}.start();

這將在單獨的線程中播放您的東西。 但是,您必須考慮到,由於GUI響應迅速,因此可以在歌曲仍在播放時開始播放歌曲。

有關更多信息,請參閱

EDT (事件分發線程)上的任務必須快速完成; 如果沒有,則將備份未處理的事件,並且用戶界面將變得無響應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM