2010-04-14 4 views
0

Я создал страницу входа с помощью java swing. и я создал банку для приложения. Теперь, когда я запускаю jar, тогда отображается моя страница входа в систему, затем я сворачиваю приложение и снова запускаю jar, тогда отображается другой экземпляр моего приложения (теперь в моей системе есть две страницы входа в систему. 1 находится в свернутом формате, а другой - в нормальном состоянии.Как развернуть приложение java swing

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

Как достичь этого типа функциональности?

пожалуйста, помогите мне

Спасибо Sunil Kumar Sahoo

+2

Насколько я понял, вам нужно приложение с одним экземпляром: http://stackoverflow.com/questions/177189/how-to-implement-a-single-instance-java-application –

ответ

0

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

Что касается вашего точного вопроса, невозможно, чтобы приложение Swing узнало о другом, работающем без какого-либо определенного кода.

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

0

Для приложения Web Start это легко. Вы можете использовать классы SingleInstanceService и SingleInstanceListener. Вы просто убиваете предыдущий экземпляр при запуске нового экземпляра.

Предыдущий экземпляр должен получить сообщение от нового, выполнив NewActivation(). Предыдущий экземпляр должен получить сообщение об отключении и ответить соответствующим образом.

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

+0

Я не могу убить предыдущий экземпляр –

+0

Вместо того, чтобы убивать предыдущий экземпляр, может быть лучше убить новый экземпляр, после того, как он уведомит исходный экземпляр, что он должен «максимизировать». Это может быть так же просто, как запись в сокет, который открывается первым экземпляром. –

+0

@ Сунил, я предоставил более подробную информацию. @Jason, я обновил свой ответ, чтобы отразить преимущества закрытия предыдущего экземпляра. Мне нравится ваше предложение, но я его никогда не реализовывал, поэтому я не знаю подробностей о том, как вы «максимизируете» приложение. Я реализовал это по-другому. –

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