如何打开以 JDesktopPane 为中心的 JInternalFrame?

问题描述 投票:0回答:6

当用户选择通过菜单打开各种功能时,我将一堆

JInternalFrame
添加到
JDesktopPane
中。但我希望内部框架在桌面窗格的中心打开,而不是在左上角,它们似乎默认在那里。

如何指定JInternalFrames居中打开,或者打开后将其移动到中心?

jDesktopPane.add(jInternalFrame); // jInternalFrame is not centered!
java swing center jinternalframe jdesktoppane
6个回答
16
投票

作为参考,这是我根据dogbane的建议使用的解决方案:

Dimension desktopSize = desktopPane.getSize();
Dimension jInternalFrameSize = jInternalFrame.getSize();
jInternalFrame.setLocation((desktopSize.width - jInternalFrameSize.width)/2,
    (desktopSize.height- jInternalFrameSize.height)/2);

4
投票

计算出新位置的左上角(根据

JDesktopPane
JInternalFrame
的大小),然后调用
JInternalFrame.setLocation


1
投票

如果您使用 Netbeans(推荐用于桌面应用程序),您只需:

  1. 选择表格,右键属性;
  2. 转到代码选项卡;
  3. 将“表单大小策略”从“Generate Pack()”更改为“Generate Resize 代码”;
  4. 表格位置(表格大小政策上方的选项)将可用。

现在您可以根据需要设置 for 位置了:)


0
投票

我建议使用 Window.setLocationRelativeTo(Component) 方法,该方法将使窗口相对于指定组件居中。您可能希望获取组件的父框架,而不是传入 JDesktopPane,否则,您的 JInternalFrame 将根据您传入的任何组件居中。

这是一个代码示例:

private void showDialog(Dialog dialogToCenter, Component button) {
    Frame frame = JOptionPane.getFrameForComponent(button);
    dialogToCenter.setLocationRelativeTo(frame);
    dialogToCenter.setVisible(true);
}

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);

0
投票

这个对齐事件......不要忘记

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);

}     
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.