在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);
这将替换小调色板标题栏可以用来拖动没有按钮或标题的内部框架。
跨平台的“无标题栏中的是JInternalFrame失去其能力被拖进” - 但它仍可以调整;) – 2009-07-05 10:12:22