我在JInternalFrame
中添加了一堆JDesktopPane
,因为用户选择通过菜单打开各种功能。但我希望内部框架在桌面窗格中心打开,而不是左上角,它们似乎是默认的。
如何指定JInternalFrames打开居中,或者在打开后将它们移动到中心?
jDesktopPane.add(jInternalFrame); // jInternalFrame is not centered!
答案 0 :(得分:11)
作为参考,这里是我使用的解决方案,基于dogbane的建议:
Dimension desktopSize = desktopPane.getSize();
Dimension jInternalFrameSize = jInternalFrame.getSize();
jInternalFrame.setLocation((desktopSize.width - jInternalFrameSize.width)/2,
(desktopSize.height- jInternalFrameSize.height)/2);
答案 1 :(得分:4)
计算新位置的左上角(根据JDesktopPane
和JInternalFrame
的大小),然后拨打JInternalFrame.setLocation
。
答案 2 :(得分:0)
我建议使用Window.setLocationRelativeTo(Component)方法,该方法将窗口相对于指定的组件居中。您可能希望获取组件的父框架,而不是传入JDesktopPane,否则,您的JInternalFrame将根据您传入的任何组件进行居中。
以下是代码示例:
private void showDialog(Dialog dialogToCenter, Component button) {
Frame frame = JOptionPane.getFrameForComponent(button);
dialogToCenter.setLocationRelativeTo(frame);
dialogToCenter.setVisible(true);
}
答案 3 :(得分:0)
如果您正在使用Netbeans(建议用于桌面应用程序),则只需:
现在,您可以根据需要设置for位置:)
答案 4 :(得分:0)
添加此空白
public void addCentered(Component jif) {
desktopPane.add(jif);
jif.setLocation((desktopPane.getWidth()-jif.getWidth())/2, (desktopPane.getHeight()-jif.getHeight())/2);
jif.setVisible(true);
}
以及添加jInternalFrame调用时:
addCentered(jifName);