移除浮动的 JToolbar

问题描述

我的应用程序中有一个 JButton 可以添加/删除 JToolBar。当工具栏停靠时,我可以使用以下方法将其删除:

toolBar.getParent().remove(toolbar); // toolBar is an instance of JToolBar

如果我在工具栏浮动时执行此操作,则不会发生任何事情,浮动工具栏会保留在那里。

解决方法

使用从JToolBar获取的BasicToolBarUI对象,我们可以知道它是否浮动。如果 JToolbar 是浮动的,我们可以处理它的窗口。

public boolean isFloating(JToolBar toolbar) {
  ToolBarUI ui = toolbar.getUI();
  return ui instanceof BasicToolBarUI && ( (BasicToolBarUI) ui).isFloating();
}

public void removeFromParent(JToolBar toolbar) {
  if (isFloating(toolbar)) {
    // Dock the JToolBar before removing
    BasicToolBarUI basicToolbarUI = (BasicToolBarUI) toolbar.getUI();
    basicToolbarUI.setFloating(false,null);
  }
  // Not floating,docked,remove from parent component
  toolbar.getParent().remove(toolbar);
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...