// public HoverCloseButtonTabbedPane(int tabPlacement, int tabLayoutPolicy) { // super(tabPlacement, SCROLL_TAB_LAYOUT); // } @Override public void updateUI() { removeMouseMotionListener(hoverHandler); super.updateUI(); // setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); hoverHandler = new MouseMotionAdapter() { private int prev = -1; @Override public void mouseMoved(MouseEvent e) { JTabbedPane source = (JTabbedPane) e.getComponent(); int focussed = source.indexAtLocation(e.getX(), e.getY()); if (focussed == prev) { return; } for (int i = 0; i < source.getTabCount(); i++) { TabPanel tab = (TabPanel) source.getTabComponentAt(i); tab.setButtonVisible(i == focussed); } prev = focussed; } }; addMouseMotionListener(hoverHandler); }