在MacOS上未装饰JInternalFrame

问题描述:

我试图展开JInternalFrame,即使用以下代码删除默认标题栏;在MacOS上未装饰JInternalFrame

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

我在Windows上运行,但在第二行抛出一个NullPointerException在MacOS

任何想法,为什么,以及如何避开它?

在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)); 
} 

这么多关于:-(

我不使用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