2015-02-15 3 views
0

Хорошо, так недавно я сделал программу, например, инструмент для обрезки в java, используя swing, который позволяет вам выбрать область вашего экрана и сохранить ее как изображение на вашем компьютере.Сторонняя банка, выходящая из моей программы?

Теперь, я пытаюсь сделать новый проект, который использует другую программу, которую я создал.

Однако, когда в моем новом приложении запущен сторонний банкомат, он отлично работает, но когда я закрываю стороннее приложение, он также закрывает мое новое приложение. Я использую системный выход в приложении третьей части, который, как я знаю, является причиной его закрытия.

Теперь мой вопрос: неправильно ли использовать выход системы по этой причине? Есть ли что-то, что я могу сделать, чтобы предотвратить закрытие моего нового приложения без изменения старого?

Или не могли бы вы дать предложения в будущем, а не использовать system.exit, потому что я все еще хочу, чтобы оригинал мог быть правильно закрыт, я просто не хочу, чтобы мой новый, который использует старую банку, закрывается как Что ж.

Я попытался отключить выход системы из своего нового приложения, которое просто создает больше проблем.

+0

Я думаю, вы можете немного изучить класс ServiceLoader. Таким образом, вы создаете «SnippingProvider» .. – jdub1581

+0

неправильно по этой причине использовать выход системы по этой причине, а также по другим причинам. Он не должен использоваться ни в одном коде, который можно было бы использовать в качестве библиотеки. И нет, вы не можете предотвратить это - вам придется удалить вызов выхода из системы. – eis

ответ

1

Не используйте System.exit();

Есть ли что-то, что я могу сделать, чтобы предотвратить закрытие моего нового приложения без изменения старого?

использование:

frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

если кадр является единственным окно открытым он будет выходить из виртуальной машины Java. Если открываются другие окна, закрывается только текущее окно. Операция закрытия по умолчанию используется, когда вы нажимаете кнопку «Закрыть» окна.

Еще лучше, не используйте JFrame в качестве окна для вашего инструмента. Вместо этого вы должны использовать JDialog.

+0

И, конечно же, он не будет закрыт, если основная часть оригинала все еще работает, что является самым важным. – Cruncher

+0

Если бы я должен был изменить старое приложение, чтобы использовать DISPOSE_ON_CLOSE, он не полностью выйдет из программы правильно, просто избавьтесь от окно? EDIT: Nevermind, я понимаю, что вы говорите, когда я создаю стороннее приложение, измените JFrame на DISPOSE_ON_CLOSE, а затем оригинал будет по-прежнему иметь EXIT_ON_CLOSE/System.exit(). Правильно ли я это интерпретирую? – LivingALoop

+0

Да, это правильно. Тем не менее, вы также можете использовать DISPOSE_ON_CLOSE на своем основном JFrame, а JVM избавится от фрейма, а затем выйдет из JVM, когда все потоки перестанут работать. Кроме того, если вы создаете стороннее приложение, это не должно быть JFrame. Это должен быть JDialog, а затем он будет создан как дочернее окно вашего JFrame, поскольку оно не является автономным приложением. – camickr

 Смежные вопросы

  • Нет связанных вопросов^_^