2012-03-28 236 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中。

我希望這有助於,問候。