我正在使用主面板开发一个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?
答案 0 :(得分:2)
如果您要在 jDesktopPane1.add(框架)之后打印尺寸,那么您可能会看到尺寸的变化。我建议将桌面窗格设置为内部框架的大小是一种不好的做法 - 我认为它应该保持桌面窗格所在的父JFrame的客户区域的大小(您调用setContentPane的框架) jDesktopPane1)),让内部框架自然地位于其中的某个位置。
可能正在发生的事情是将窗格和内部设置为相同的大小可能会使外观假设您的意思是“最大化”,因此当它正确地解析桌面窗格的大小时它对内部框架做了一些奇怪的事情。
尝试不在桌面窗格上调用setSize()/ setPreferredSize(),看看它是否在L& Fs中表现一致。也许那时你可以弄清楚如果它的默认大小不是你想要的内部框架最好做什么。
答案 1 :(得分:0)
如果您想将大小设置为您要放入的jframe的宽度和高度。您可以使用
variable_desktopPane.setBounds(this.getBounds());
按this
我的意思是你称之为Jframe的Jframe。
我希望这会有所帮助,问候。