启动应用程序时显示“登录内部框架”。但问题是它不会出现在应用程序屏幕的中心位置。
获取桌面实际大小和设置JInternalFrame位置的代码如下:
private void new_init(){
LoginInternal login = new LoginInternal(jMenuBar1);
Dimension desktopSize = this.getSize();
Dimension jInternalFrameSize = login.getSize();
System.out.println("desktopSize: "+desktopSize+" jInternalFrameSize:" +jInternalFrameSize );
jMenuBar1.setVisible(false);
login.setLocation((desktopSize.width - jInternalFrameSize.width)/2,(desktopSize.height- jInternalFrameSize.height)/2);
jDesktopPane1.add(login);
login.show();
}
我的屏幕分辨率为1366x768。 但根据我提出的印刷品
“desktopSize:java.awt.Dimension [width = 1024,height = 768] jInternalFrameSize:java.awt.Dimension [width = 398,height = 286]”
我的分辨率为1024x768。 在JDesktopPane的pre-init代码中,我设置了“setExtendedState(JFrame.MAXIMIZED_BOTH);”
现在我在最大化模式下打开了两个,但是登录框架没有居中,因为它采用了分辨率为“[width = 1024,height = 768]”的居中逻辑。如果它需要我当前的屏幕分辨率,我认为它会集中精力。
我希望我说清楚。我哪里出错?
答案 0 :(得分:0)
它不会出现在应用程序屏幕的中心位置。
LoginInternal login = new LoginInternal(jMenuBar1);
Dimension desktopSize = this.getSize();
Dimension jInternalFrameSize = login.getSize();
创建时,组件的默认大小为(0,0)。无法判断构造函数代码是否设置了大小。
启动应用程序时显示“登录内部框架”。
出于这个原因,不要使用JInternalFrame。使用模态JDialog。基本代码是:
JDialog dialog = new JDialog(...);
dialog.add(...);
dialog.pack();
dialog.setLocationRelativeTo( null );
dialog.setVisible( true );