Java (Swing) - перетащите два окна одновременно - PullRequest
0 голосов
/ 09 апреля 2009

Как мне сделать так, чтобы одно окно двигалось с другим? я хотел бы, чтобы JDialog следовал за JFrame, когда JFrame перетаскивается. Если JFrame перемещается на (+5, +20), JDialog должен перемещаться так же.

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

Ответы [ 3 ]

1 голос
/ 09 апреля 2009

AFAIK здесь нет перемещения нескольких окон в AWT. Чтобы сделать так, чтобы ходы вызывались в одно и то же время, я думаю, вы хотите, чтобы декорации JFrame отображались в PL & F. Поместите хак, специфичный для PL & F, чтобы сделать ходы самостоятельно, перемещая оба окна практически одновременно. У вас все еще может быть проблема с тем, чтобы выставлять биты окон только для того, чтобы скрыть их, вызывая некоторое снижение производительности.

1 голос
/ 09 апреля 2009

Попробуйте использовать событие ComponentListener.componentMoved вместо мониторинга событий перетаскивания в JFrame.

0 голосов
/ 27 января 2012

Компонентный метод слушателя работает отлично. Я сделал что-то вроде этого:

Point p = this.getLocation();
p.x += this.getWidth() + 10;
this.getOwner().setLocation(p);

Где '10' - это пространство между текущим окном (JDialog) и его владельцем, которое находится справа от него.

...