The following code allows you to move a non-modal JDialog together with its parent JFrame and vice versa in a Swing application.
//new MovingTogether(jFrame1, jDialog1); ("jFrame1" is a JFrame//and "jDialog1" is a non-modal JDialog with jFrame1 as parent)class MovingTogether extends ComponentAdapter{ public MovingTogether(JFrame winA, JDialog winB){ this.winA = winA; this.winB = winB; winA.addComponentListener(this); winB.addComponentListener(this); } public void componentMoved(ComponentEvent e) { Window win = (Window) e.getComponent(); if(win==winA){ winB.removeComponentListener(this); winB.setLocationRelativeTo(winA); winB.addComponentListener(this); } else if(winB.isVisible()) winA.setLocationRelativeTo(winB); } private Window winA, winB;}