删除浮动的 JToolbar

Remove floating JToolbar

我在 add/remove JToolBar 的申请中有一个 JButton。当工具栏停靠时,我可以使用以下方法将其删除:

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

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

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

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