私は JFrame と Thread を持つこの Java プログラムを書いています。「X」ボタンをクリックしてプログラムを閉じると、プログラム自体が閉じますが(フレームとそのリソースが破壊されます)、「javaw.exe」プロセスは終了しません。私はいつもそれを手動で終了しなければなりません。
もちろん setDefaultCloseOperation(JFrame.*EXIT_ON_CLOSE*) を試しましたが、 System.exit(0) を含む awt ウィンドウリスナーも試しましたが、まだ成功していません。
役立つアイデアはありますか?
これが私のコードです。[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();
}
}