我正在开发一个带有主面板的java应用程序,我在其中添加了一个JDesktopPane。用户单击JButton,将显示一个JInternalFrame。我的问题是,如果我使用Mac OSx外观,JDesktopPane以正确的大小显示JInternalFrame,如果我使用其他外观,它将在屏幕尺寸中显示JInternalFrame。这就是我要做的:
在主JPanel中
jDesktopPane1 = new JDesktopPane();
setContentPane(jDesktopPane1);当用户单击JButton(s)时
public void addInDesktop(JInternalFrame frame){
frame.setVisible(true);
try {
jDesktopPane1.setSize(frame.getSize());
jDesktopPane1.setPreferredSize((frame.getSize()));
System.out.println(frame.getSize().toString());
System.out.println(jDesktopPane1.getSize().toString());
jDesktopPane1.add(frame);
frame.moveToFront();
frame.setSelected(true);
} catch (PropertyVetoException e) {
e.printStackTrace();
}
}System.out.println告诉我JDesktopPane和JInternalFrame的尺寸是一样的,但为什么它显示的是全屏大小的JInternalFrame?
发布于 2012-03-28 18:50:23
如果您在jDesktopPane1.add(frame)之后打印出大小,那么您可能会看到大小的变化。我建议将桌面窗格设置为内部框架的大小是一种不好的做法-我认为它应该保持桌面窗格所在的父JFrame (调用setContentPane(jDesktopPane1)的框架)的工作区的大小,并自然地让内部框架位于其中的某个位置。
可能会发生的情况是,将窗格和内部设置为相同的大小可能会使外观和感觉假设您的意思是“最大化”,因此当它正确解析桌面窗格的大小时,它会对内部框架做一些奇怪的事情。
尽量不要在桌面窗格上调用setSize() / setPreferredSize(),看看它在L&F上的行为是否一致。如果内部框架的默认大小不是您想要的大小,那么也许您可以弄清楚如何处理内部框架。
发布于 2016-07-16 05:23:37
如果你想设置的大小和你的jframe一样宽和高,你要把它放进去。您可以使用
variable_desktopPane.setBounds(this.getBounds());我所说的this指的是你称之为边界的Jframe。
我希望这对你有所帮助,问候。
https://stackoverflow.com/questions/9905777
复制相似问题