Как открыть JInternalFrame с центром в JDesktopPane?
я добавляю кучу JInternalFrame
на JDesktopPane
, как пользователь выбирает, чтобы открыть различные функции через меню. Но я хотел бы, чтобы внутренние фреймы открывались по центру на панели рабочего стола, а не в левом верхнем углу, где они по умолчанию.
как я могу указать, что JInternalFrames открыть по центру или переместить их в центр после открытия?
jDesktopPane.add(jInternalFrame); // jInternalFrame is not centered!
3 ответов
для справки, вот решение, которое я использовал, основываясь на совете dogbane:
Dimension desktopSize = desktopPane.getSize();
Dimension jInternalFrameSize = jInternalFrame.getSize();
jInternalFrame.setLocation((desktopSize.width - jInternalFrameSize.width)/2,
(desktopSize.height- jInternalFrameSize.height)/2);
разработать верхний левый угол нового местоположения (на основе размера JDesktopPane
и JInternalFrame
), а затем вызвать JInternalFrame.setLocation
.
Я бы предложил в окно.setLocationRelativeTo (Component) метод, который будет центрировать окно относительно указанного компонента. Вместо передачи в JDesktopPane, вы можете получить Родительский кадр для компонента, так как в противном случае ваш JInternalFrame будет центрирован в соответствии с тем, какой компонент вы передаете.
вот пример кода:
private void showDialog(Dialog dialogToCenter, Component button) {
Frame frame = JOptionPane.getFrameForComponent(button);
dialogToCenter.setLocationRelativeTo(frame);
dialogToCenter.setVisible(true);
}