2013-02-27 42 views
0

我寫顯示連接到我的電腦攝像頭的應用程序後結束。 由於代碼非常簡單,我只需在此處編寫代碼。Java的Eclipse的「過程」不關閉應用程序

public static void main(String[] args) { 
    JFrameImageDisplayer _window = new JFrameImageDisplayer(); 
    //webcamGrabber _wg = new webcamGrabber(); 
    //commented out because I am having trouble with this class. 
} 

JFrameImageDisplayer打開一個框架,幾乎就是這樣。 當我運行這段代碼時,我在框架中打開一個帶有JLabel的簡單應用程序。如果我關閉了應用程序,那麼整個過程終止(以及Windows任務管理器進程選項卡進程中的進程)。

然而,一旦我創建_wg,在任務管理器的進程甚至不經過我關閉該應用程序結束了剛剛燃燒處理能力,直到我手動去處理吧,結束它終止。

下面是對webcamGrabber施工代碼。

{ 
    OpenCVFrameGrabber _grab = new OpenCVFrameGrabber(0); 
    try{ 
     _grab.start(); 

    } catch (Exception e){ 
     e.printStackTrace(); 
    } 
} 
+1

你解除與'你的JFrame的關閉事件_grab'對象關聯的資源? – 2013-02-27 07:15:02

+0

這聽起來像我應該做的。不,我沒有發佈任何東西。我應該手動發佈它嗎?我認爲一旦我關閉應用程序,所有東西都會蒸發掉?我對應用程序開發很陌生。你能否補充一點信息? – BlueBug 2013-02-27 07:16:57

+0

'我應該手動釋放它嗎?':這取決於你使用的Api /類。可能是'OpenCVFrameGrabber'作者已經考慮到了這一點,你必須研究它是關於釋放資源的文檔。 – 2013-02-27 07:23:52

回答

1

好吧,我不太確定是做什麼的。所以我手動發佈資源。

protected void processWindowEvent(WindowEvent e){ 
    if(e.getID() == WindowEvent.WINDOW_CLOSING) { 
     try{_wg._grab.release();} 
     catch(Exception ee){} 
    } 
    super.processWindowEvent(e); 
} 

不是最好的方式來做到這一點,但它的工作原理。