2009-07-04 14 views
1

我試圖展開JInternalFrame,即使用以下代碼刪除默認標題欄;在MacOS上未裝飾JInternalFrame

BasicInternalFrameUI ui = (BasicInternalFrameUI)internalFrame.getUI(); 
ui.getNorthPane().setPrefrredSize(new Dimension(0,0)); 

我在Windows上運行,但在第二行拋出一個NullPointerException在MacOS

任何想法,爲什麼,以及如何避開它?

回答

0

在Mac上,JInternalFrame沒有北面板。只在非Mac OS平臺上執行代碼;

// only remove the northpanel for none Mac OS 
if(!(System.getProperty("os.name").startsWith("Mac OS"))){ 
    BasicInternalFrameUI ui = (BasicInternalFrameUI) getUI(); 
    ui.getNorthPane().setPrefrredSize(new Dimension(0,0)); 
} 

這麼多關於:-(

0

我不使用Mac,所以我不知道是什麼導致了問題。

沒有標題欄的JInternalFrame失去了被拖動的能力。只需在桌面上添加一個JPanel即可完成相同的目標。您需要設置面板​​的邊界。您可能還需要使用面板上的內部框架自定義邊框之一:

UIManager.getBorder("InternalFrame.paletteBorder"); 
UIManager.getBorder("InternalFrame.optionDialogBorder"); 

或者,也許另一種選擇是使用:

internalFrame.putClientProperty("JInternalFrame.isPalette", Boolean.TRUE); 

這將替換小調色板標題欄可以用來拖動沒有按鈕或標題的內部框架。

+0

跨平臺的「無標題欄中的是JInternalFrame失去其能力被拖進」 - 但它仍可以調整;) – 2009-07-05 10:12:22