установить расположение 2 кадров в середине экрана

1

Мне нужно центрировать два JFrame бок о бок на экране (например, как если бы они были одним центром с центром).

Чтобы JFrame один JFrame я использовал команду:

frame.setLocationRelativeTo(null);

Как я могу решить сейчас?

Теги:
swing
jframe

2 ответа

3
Лучший ответ

Вам нужно знать три вещи...

  1. Доступная видимая область экрана
  2. Размер обоих окон... (это считается как два)

Есть несколько способов получить размер экрана, но то, что вы действительно хотите, - это область просмотра, область, в которой безопасно показывать окна...

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? и использование разделительных панелей

  • 0
    Спасибо за ответ, который вы мне очень помогли, даже если этот код не работает (для меня), но я изменил по-своему, и он работает отлично. Это хорошее или плохое использование нескольких JFrame. Я бы не знал, какую сторону выбрать, хотя я бы предпочел (как пользователь программного обеспечения) один JFrame. Я делаю уровень обучения, чтобы узнать что-то большее. В любом случае, еще раз спасибо!
0

Вы можете вручную установить положение своего фрейма С#setLocation, я думаю

Ещё вопросы

Сообщество Overcoder
Наверх
Меню