我在寫這個Java程序,其中有一個JFrame和一個線程。 一切都很好,除了當我點擊'X'按鈕關閉程序,程序本身關閉(框架和它的資源被破壞),但「javaw.exe」過程不會結束。我必須始終手動終止。我試過了setDefaultCloseOperation(JFrame。* EXIT_ON_CLOSE *),我甚至嘗試過帶有System.exit(0)的awt窗口監聽器,但仍然沒有成功。「javaw.exe」在System.exit之後不會退出(0)
任何想法,以幫助?
這是我的代碼。 [它需要你的機器上安裝JavaCV]
class MyGrabber implements Runnable {
final int INTERVAL = 1000;// /you may use interval
IplImage image;
CanvasFrame frame = new CanvasFrame("Web Cam");
public MyGrabber() {
frame.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
}
@Override
public void run() {
FrameGrabber grabber = new OpenCVFrameGrabber(0); // 1 for next camera
int i = 0;
try {
grabber.start();
while (true) {
image = grabber.grab();
if (image != null) {
cvSaveImage("test.jpg", image);
// show image on window
frame.showImage(image);
}
Thread.sleep(INTERVAL);
}
} catch (InterruptedException e) {
e.printStackTrace();
} catch (com.googlecode.javacv.FrameGrabber.Exception e) {
e.printStackTrace();
}
}
}
public class TestGrabber {
public static void main(String[] args) {
MyGrabber gs = new MyGrabber();
Thread th = new Thread(gs);
th.start();
}
}
您可能需要向我們提供更多信息。如果您很快就不能獲得體面的解決方案,請考慮創建併發布[SSCCE](http://SSCCE.org)。 –
更多信息?像什麼?什麼是不可理解的? – Emil
我不明白是什麼導致你目前的問題,並擔心這是因爲你發佈的代碼與當前問題無關。如果我把你的代碼放在上面,按摩它以便編譯和運行,但它不會重現問題。所以這對我意味着這個問題可能在代碼的其他地方未顯示。我們沒有時間或意願來審覈所有的代碼,但如果這是我的項目,我會嘗試將代碼分解到最少的可編譯和可運行代碼,這實際上證明了問題。然後我會在這裏發佈。 –