我正在尝试取消设计JInternalFrame
,即使用以下代码删除默认标题栏;
BasicInternalFrameUI ui = (BasicInternalFrameUI)internalFrame.getUI();
ui.getNorthPane().setPrefrredSize(new Dimension(0,0));
我在Windows上工作,但第二行在MacOS上抛出NullPointerException
任何想法为什么以及如何绕过它?
答案 0 :(得分:0)
我不使用Mac,所以我不知道导致问题的原因。
没有标题栏的JInternalFrame失去了被拖动的能力。只需将JPanel添加到桌面,您就可以实现相同的目标。您需要设置面板的边界。您可能还想在面板上使用其中一个内部框架自定义边框:
UIManager.getBorder("InternalFrame.paletteBorder");
UIManager.getBorder("InternalFrame.optionDialogBorder");
或许可以使用另一种选择:
internalFrame.putClientProperty("JInternalFrame.isPalette", Boolean.TRUE);
这将用一个小调色板替换标题栏,可用于拖动内部框架而不使用按钮或标题。
答案 1 :(得分: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));
}
关于跨平台的事情: - (