Мне нужно центрировать два JFrame
бок о бок на экране (например, как если бы они были одним центром с центром).
Чтобы JFrame
один JFrame
я использовал команду:
frame.setLocationRelativeTo(null);
Как я могу решить сейчас?
Вам нужно знать три вещи...
Есть несколько способов получить размер экрана, но то, что вы действительно хотите, - это область просмотра, область, в которой безопасно показывать окна...
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
// Use this if need to know about a device which is not the default...
//GraphicsDevice lstGDs[] = ge.getScreenDevices();
GraphicsDevice device = ge.getDefaultScreenDevice();
GraphicsConfiguration cf = device.getDefaultConfiguration();
Rectangle bounds = cf.getBounds();
Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(gc);
bounds.x += insets.left;
bounds.y += insets.top;
bounds.width -= (insets.left + insets.right);
bounds.height -= (insets.top + insets.bottom);
Теперь это говорит о том, в какой области можно безопасно показывать контент, принимая во внимание такие вещи, как панель задач/док, которые есть у некоторых ОС...
Затем вам нужно знать размер окна...
frameA.pack();
frameB.pack();
Dimension dimA = frameA.getSize();
Dimension dimB = frameB.getSize();
Теперь вам нужно рассчитать положение окон...
Point pA = new Point(
bounds.x + ((bounds.width / 2) - dimA.width),
bounds.y + ((bounds.height- dimA.height) / 2));
Point pB = new Point(
bounds.x + (bounds.width / 2),
bounds.y + ((bounds.height- dimB.height) / 2));
И там у вас это есть...
Теперь, сказав все это, вы можете взглянуть на использование нескольких JFrames, Good/Bad Practice? и использование разделительных панелей
Вы можете вручную установить положение своего фрейма С#setLocation, я думаю