Center JDialog over parent
java, jframe, layout, swing, user-interface
Solution
`setLocationRelativeTo` ..this sets the top left pixel of the popup over the center pixel of the parent. ..
No it does not!
Each of the 3 dialogs popped by this simple example appears to be centered as far as I can see. I can only guess that the code is calling `setLocationRelativeTo` at the wrong time.
import javax.swing.*;
class CenterTheDialog {
CenterTheDialog() {
for (int ii=1; ii<4; ii++) {
JFrame f = new JFrame("Frame " + ii);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setSize(400,300);
f.setLocationByPlatform(true);
f.setVisible(true);
JDialog d = new JDialog(f);
d.setSize(300,200);
d.setLocationRelativeTo(f);
d.setVisible(true);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
new CenterTheDialog();
});
}
}
Problem
I have a Java swing application with a button that produces a popup window when a certain action is performed. I'd like to align the center point of the popup window with the center point of the parent window when it is rendered. How can I calculate the x,y coordinates to plug into `setLocation()` for the popup window? Just to clarify. I do not want the behavior of `setLocationRelativeTo()` because that sets the top-left pixel of the popup over the center pixel of the parent frame. I want to set the center pixel of the popup over the center pixel of the parent frame.