我在這裏有點絕望。我有這個jFrame,我需要按下Escape後關閉。這很容易通過使用keyTyped事件來完成。在keyTyped事件中,我嘗試使用關閉窗口的System.exit,但進程仍在任務管理器中運行(並且在NetBeans中,即使我從jar文件運行,它仍在任務管理器中運行) 。程序在System.exit後仍然運行
我試過配置setVisible(false)以及其他東西,但似乎沒有任何工作。
編輯:
代碼
public Sketch(int width, int height)
{
sketch = new JFrame();
area = new JLabel();
sketch.setUndecorated(true);
sketch.setMinimumSize(new Dimension(width, height));
sketch.setSize(width, height);
area.setBounds(0, 0, width, height);
sketch.getContentPane().setLayout(null);
sketch.getContentPane().add(area);
sketch.pack();
sketch.setLocationRelativeTo(null);
sketch.setVisible(true);
sketch.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
imageBGR = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
imageGRAY = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY);
keyEvents();
setup();
Thread t = new Thread()
{
@Override
public void run()
{
running=true;
while(running)
draw();
}
};
t.start();
}
private void keyEvents()
{
sketch.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e)
{
if(e.getKeyChar()==KeyEvent.VK_ESCAPE)
{
running=false;
System.exit(0);
}
}
});
}
注:設定功能是擴展該類時我重寫一個空白的功能。
編輯2:已解決
我發現我做錯了什麼。看起來,在我擴展了這個課程的課上,我使用了網絡攝像頭。當我調用System.exit功能時,攝像頭指示燈熄滅,所以我認爲我不需要正確釋放它,但實際上它是需要的。
你有任何進程仍在運行?一個擺動計時器,也許? –
是小到足以發佈的代碼? –
用我的代碼更新。我有一個進程正在運行,但我確保它關閉。我在網上搜索了2個多小時,仍然找不到任何有效的工具。 –