Добавьте ComponentListener в диалоговое окно и прослушайте событие comopnentMoved ().
Вы можете использовать метод Window.getWindows (), чтобы получить все окна.Затем вы перебираете окна и получаете границы каждого окна.Всякий раз, когда вы находитесь рядом с окном, вы вручную устанавливаете размер перемещаемого окна.
Конечно, вам также потребуется справиться с ситуацией, когда вы хотите отодвинуть окно от другого окна, поэтому, возможно, вам нужнозапускать таймер с каждым событием componentMoved и размещать окно только вручную после того, как события перестали генерироваться.