我在这里有点绝望。我有这个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个多小时,仍然找不到任何有效的工具。 –