Я заметил, что если установлено setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
, закрытие фрейма завершит его процесс в диспетчере задач, но если я реализую WindowListener и вручную удалю() фрейм, Process останется ... вероятно, потому, что в новый Runnable() у меня есть что-то вроде этого:dispose() не то же самое, что setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE)
new Runnable() {
void run() {
Jsch tunnel=new Jsch();
JFrame frame=new JFrame();
frame.addWindowListener(new WindowListener() { frame.dispose(); }); // imagine that this is legal
frame.setVisible(true);
}
}
Любой человек может сказать мне, как вручную закончить процесс, созданный каким-либо приложением?
'вероятно, потому что в новом Runnable() у меня есть что-то вроде этого:' - correct. Команда dispose() завершит процесс, если вы удалите последнее окно, созданное приложением. Но поскольку вы закрываете один кадр и открываете другое, задача Java все еще работает. 'как вручную завершить процесс, созданный некоторым приложением?' - Не уверен, что вы ожидаете, потому что процесс все еще запущен из-за нового фрейма. Возможно, вы можете использовать класс ProcessBuilder для запуска нового процесса, чтобы старый процесс мог закончиться. Однако новый процесс все равно будет отображаться в диспетчере задач, я бы предположил. – camickr
Момент, вы рассматриваете Jsch как фрейм ... потому что я не понимаю, для какого «нового кадра» вы говорите в последнем ответе ... – jovanMeshkov
Зависит от самого процесса. Например, если у вас есть что-то вроде таймера качания, лучший способ остановить его - использовать 'WindowListener' (вызывая метод' stop' в overriden 'windowClosed method'). Кстати, лично я всегда использую DISPOSE_ON_CLOSE как операцию закрытия по умолчанию. Просто чтобы все было в безопасности. –