private boolean isParentChange(HierarchyEvent evt) { if(evt.getID()!=HierarchyEvent.HIERARCHY_CHANGED || evt.getChangeFlags()!=HierarchyEvent.PARENT_CHANGED) { return false; } return true; }
final JScrollPane scroll = new JScrollPane(createMyPanel()); scroll.getVerticalScrollBar().addHierarchyListener(new HierarchyListener() { @Override public void hierarchyChanged(HierarchyEvent e) { if (e.getID() == HierarchyEvent.HIERARCHY_CHANGED && (e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED) != 0) { System.out.println(scroll.getVerticalScrollBar().isVisible()); } } });
@Override public void hierarchyChanged(HierarchyEvent e) { if (HierarchyEvent.HIERARCHY_CHANGED == e.getID() && (e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED) != 0) { // The scroll bar has changed state if (e.getComponent().isShowing()) { // Draw a border to the right of the table table.setBorder(BorderFactory.createMatteBorder(0, 0, 0, 1, Themes.currentTheme.text())); } else { // Remove the table border to avoid a thick black line on the right table.setBorder(BorderFactory.createEmptyBorder()); } } } });
@Override public void hierarchyChanged(HierarchyEvent e) { // if we are not talking about a rootpane being added to a window, quit and never try again if (!((e.getChangedParent() instanceof Dialog) || (e.getChangedParent() instanceof Frame))) { e.getChanged().removeHierarchyListener(this); return; } // if we are something other than a change event, quit if ((e.getID() != HierarchyEvent.HIERARCHY_CHANGED) || !(e.getChanged() instanceof JRootPane)) { return; } Window w = (Window) e.getChangedParent(); if (w != null) { if (!Arrays.asList(w.getComponentListeners()).contains(WINDOW_ROUNDER)) { w.addComponentListener(WINDOW_ROUNDER); } e.getChanged().removeHierarchyListener(this); } } };