2012-03-28 217 views
0

我正在开发一个带有主面板的Java应用程序,其中我添加了一个JDesktopPane。 用户点击JButton,将显示一个JInternalFrame。我的问题是,如果我使用Mac OSx的外观和感觉,JDesktopPane显示正确的尺寸JInternalFrame,如果我使用其他外观和感觉,它将在屏幕的维度中显示JInternalFrame。这是我做的:如何设置JDesktopPane大小

在主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?

回答

2

如果您要在 jDesktopPane1.add(frame)之后打印出尺寸为的尺寸,则可能会看到尺寸的变化。我建议将桌面窗格设置为内部框架的大小是一种不好的做法 - 我原以为它应该保持桌面窗格所在的父JFrame客户区的大小(您调用setContentPane的框架( jDesktopPane1)),并让内部框架自然地坐在其中。

什么可能来发生的是,设置面板和内部相同的大小可能使外观和感觉假设你的意思是“最大化”,所以当它解决了桌面窗格的大小正确它确实很奇怪与内部框架。

尝试在桌面窗格调用的setSize()/有必要对setPreferredSize(),看看它是否然后在大号& Fs的一贯表现。也许你可以弄清楚如果内部框架的默认尺寸不是你想要的,该怎么做。

0

如果你想设置大小为宽,高为你的JFrame你要去哪里就摆在你可以使用

variable_desktopPane.setBounds(this.getBounds()); 

通过this我的意思是你在调用它的边界JFrame中。

我希望这有助于,问候。