当用户选择通过菜单打开各种功能时,我将一堆
JInternalFrame
添加到 JDesktopPane
中。但我希望内部框架在桌面窗格的中心打开,而不是在左上角,它们似乎默认在那里。
如何指定JInternalFrames居中打开,或者打开后将其移动到中心?
jDesktopPane.add(jInternalFrame); // jInternalFrame is not centered!
作为参考,这是我根据dogbane的建议使用的解决方案:
Dimension desktopSize = desktopPane.getSize();
Dimension jInternalFrameSize = jInternalFrame.getSize();
jInternalFrame.setLocation((desktopSize.width - jInternalFrameSize.width)/2,
(desktopSize.height- jInternalFrameSize.height)/2);
如果您使用 Netbeans(推荐用于桌面应用程序),您只需:
现在您可以根据需要设置 for 位置了:)
我建议使用 Window.setLocationRelativeTo(Component) 方法,该方法将使窗口相对于指定组件居中。您可能希望获取组件的父框架,而不是传入 JDesktopPane,否则,您的 JInternalFrame 将根据您传入的任何组件居中。
这是一个代码示例:
private void showDialog(Dialog dialogToCenter, Component button) {
Frame frame = JOptionPane.getFrameForComponent(button);
dialogToCenter.setLocationRelativeTo(frame);
dialogToCenter.setVisible(true);
}
添加此空白
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);
这个对齐事件......不要忘记
enter code here
private void jMenuItem_nuevo_usuarioActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
UsuariosJInternalFrame internalUsuario = new UsuariosJInternalFrame();
jDesktopPane_menu.add(internalUsuario);
Dimension desktopSize = jDesktopPane_menu.getSize();
Dimension FrameSize = internalUsuario.getSize();
internalUsuario.setLocation((desktopSize.width - FrameSize.width) / 2, (desktopSize.height - FrameSize.height) / 2);
internalUsuario.setVisible(true);
}