下面列出了javax.swing.JMenu#setPopupMenuVisible ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private void unconfigureMenu(final JMenu menu) {
if (hackedPopupFactory == null) return; // Issue 145981
// restore the UI
menu.getPopupMenu().setUI(menuPopupUIMap.get(menu));
// restore all children
JPanel popup = hackedPopupFactory.containerMap.get(menu);
if(popup != null) {
for(Component c : popup.getComponents()) {
if(c instanceof JMenu) {
unconfigureMenu((JMenu)c);
} else {
unconfigureMenuItem((JComponent) c);
}
}
//hide the popup(s) if it's still visible
if(menu.getPopupMenu() != null) {
menu.getPopupMenu().setVisible(false);
}
popup.setVisible(false);
//layers.remove(popup);
}
VisualDesignerJPanelPopup pop = hackedPopupFactory.getPopup(menu);
if(pop != null) {
pop.hide();
}
if(popup != null) {
popup.setVisible(false);
}
menu.setPopupMenuVisible(false);
hackedPopupFactory.containerMap.remove(menu);
}
static void simulateExpansionOfMenu(JMenu m1) {
// simulate expansion in the menu
if (Utilities.isMac()) {
m1.setSelected(true);
} else {
m1.setPopupMenuVisible(true);
}
}
public static void dynamicChangeToSubmenu(JPopupMenu popup, boolean usedToBeContained) {
Object invoker = popup.getInvoker();
if (!(invoker instanceof JMenu)) {
return;
}
JMenu menu = (JMenu) invoker;
if (!popup.isShowing()) {
return;
}
if (isProblemConfig()) {
callRefreshLater2(popup, menu);
return;
}
refreshPopup(popup);
Point p = popup.getLocationOnScreen();
Dimension popupSize = popup.getPreferredSize();
Rectangle popupRect = new Rectangle(p, popupSize);
Rectangle screenRect = getScreenRect();
boolean willBeContained = isPopupContained(popup);
if (!screenRect.contains(popupRect)) {
/*
* The menu grew off the edge of the screen.
*/
menu.setPopupMenuVisible(false);
menu.setPopupMenuVisible(true);
} else if (usedToBeContained != willBeContained) {
/*
* The menu grew off the edge of the containing window.
* Use the setVisible() hack to change the menu from
* lightweight to heavyweight.
*/
popup.setVisible(false);
popup.setVisible(true);
}
}