如何在JdesktopPane的中心设置可见的JinternalFrame?

时间:2012-04-06 16:55:18

标签: java swing jframe jinternalframe

实际上我想在JDesktopPane的中心显示JinternalFrame,我使用这种方法,因为我在Jframes中使用它,但它不起作用:

Extraction ex=new Extraction();//Extraction is the name of the JintenalFrame jDesktopPane1.add(ex); ex.setLocationRelativeTo(this); ex.setVisible(true);

所以我问是否有另一种方法,所以我可以在JdesktoPane的中心显示JinternalFrame。 谢谢

2 个答案:

答案 0 :(得分:7)

尝试类似:

JDesktopPane mainPanel;
JInternalFrame jif_test = new JInternalFrame();

public void centerJIF(JInternalFrame jif) {
    Dimension desktopSize = mainPanel.getSize();
    Dimension jInternalFrameSize = jif.getSize();
    int width = (desktopSize.width - jInternalFrameSize.width) / 2;
    int height = (desktopSize.height - jInternalFrameSize.height) / 2;
    jif.setLocation(width, height);
    jif.setVisible(true);
}

centerJIF(jif_test);

答案 1 :(得分:5)

javax.swing.JInternalFrame缺少setLocationRelativeTo(null)中的方便java.awt.Window实现,但您可以使用类似的方法。只需从桌面窗格的相应中心坐标中减去内部框架宽度和高度的一半。在setLocation()的通话中使用新坐标。

如有必要,您还需要调整内部框架的尺寸。