ImageObserver
, MenuContainer
, Serializable
, Accessible
, MenuElement
BasicComboPopup
@JavaBean(defaultProperty="UI", description="A small window that pops up and displays a series of choices.") public class JPopupMenu extends JComponent implements Accessible, MenuElement
JPopupMenu
is used for the menu that appears when the user selects an item on the menu bar. It is also used for "pull-right" menu that appears when the selects a menu item that activates it. Finally, a JPopupMenu
can also be used anywhere else you want a menu to appear. For example, when the user right-clicks in a specified area. For information and examples of using popup menus, see How to Use Menus in The Java Tutorial.
Warning: Swing is not thread safe. For more information see Swing's Threading Policy.
Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeans has been added to the java.beans
package. Please see XMLEncoder
.
Modifier and Type | Class | Description |
---|---|---|
protected class |
JPopupMenu.AccessibleJPopupMenu |
This class implements accessibility support for the JPopupMenu class. |
static class |
JPopupMenu.Separator |
A popup menu-specific separator. |
JComponent.AccessibleJComponent
Container.AccessibleAWTContainer
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
Constructor | Description |
---|---|
JPopupMenu() |
Constructs a JPopupMenu without an "invoker". |
JPopupMenu |
Constructs a JPopupMenu with the specified title. |
Modifier and Type | Method | Description |
---|---|---|
JMenuItem |
add |
Creates a new menu item with the specified text and appends it to the end of this menu. |
JMenuItem |
add |
Appends a new menu item to the end of the menu which dispatches the specified Action object. |
JMenuItem |
add |
Appends the specified menu item to the end of this menu. |
void |
addMenuKeyListener |
Adds a MenuKeyListener to the popup menu. |
void |
addPopupMenuListener |
Adds a PopupMenu listener. |
void |
addSeparator() |
Appends a new separator at the end of the menu. |
protected PropertyChangeListener |
createActionChangeListener |
Returns a properly configured PropertyChangeListener which updates the control as changes to the Action occur. |
protected JMenuItem |
createActionComponent |
Factory method which creates the JMenuItem for Actions added to the JPopupMenu . |
protected void |
firePopupMenuCanceled() |
Notifies PopupMenuListeners that this popup menu is cancelled. |
protected void |
firePopupMenuWillBecomeInvisible() |
Notifies PopupMenuListener s that this popup menu will become invisible. |
protected void |
firePopupMenuWillBecomeVisible() |
Notifies PopupMenuListener s that this popup menu will become visible. |
AccessibleContext |
getAccessibleContext() |
Gets the AccessibleContext associated with this JPopupMenu. |
Component |
getComponent() |
Returns this JPopupMenu component. |
Component |
getComponentAtIndex |
Deprecated. |
int |
getComponentIndex |
Returns the index of the specified component. |
static boolean |
getDefaultLightWeightPopupEnabled() |
Gets the defaultLightWeightPopupEnabled property, which by default is true . |
Component |
getInvoker() |
Returns the component which is the 'invoker' of this popup menu. |
String |
getLabel() |
Returns the popup menu's label |
Insets |
getMargin() |
Returns the margin, in pixels, between the popup menu's border and its containers. |
MenuKeyListener[] |
getMenuKeyListeners() |
Returns an array of all the MenuKeyListener s added to this JPopupMenu with addMenuKeyListener(). |
PopupMenuListener[] |
getPopupMenuListeners() |
Returns an array of all the PopupMenuListener s added to this JMenuItem with addPopupMenuListener(). |
SingleSelectionModel |
getSelectionModel() |
Returns the model object that handles single selections. |
MenuElement[] |
getSubElements() |
Returns an array of MenuElement s containing the submenu for this menu component. |
PopupMenuUI |
getUI() |
Returns the look and feel (L&F) object that renders this component. |
String |
getUIClassID() |
Returns the name of the L&F class that renders this component. |
void |
insert |
Inserts the specified component into the menu at a given position. |
void |
insert |
Inserts a menu item for the specified Action object at a given position. |
boolean |
isBorderPainted() |
Checks whether the border should be painted. |
boolean |
isLightWeightPopupEnabled() |
Gets the lightWeightPopupEnabled property. |
boolean |
isPopupTrigger |
Returns true if the MouseEvent is considered a popup trigger by the JPopupMenu 's currently installed UI. |
boolean |
isVisible() |
Returns true if the popup menu is visible (currently being displayed). |
void |
menuSelectionChanged |
Messaged when the menubar selection changes to activate or deactivate this menu. |
void |
pack() |
Lays out the container so that it uses the minimum space needed to display its contents. |
protected void |
paintBorder |
Paints the popup menu's border if the borderPainted property is true . |
protected String |
paramString() |
Returns a string representation of this JPopupMenu . |
protected void |
processKeyEvent |
Processes key stroke events such as mnemonics and accelerators. |
void |
processKeyEvent |
Processes a key event forwarded from the MenuSelectionManager and changes the menu selection, if necessary, by using MenuSelectionManager 's API. |
void |
processMouseEvent |
This method is required to conform to the MenuElement interface, but it not implemented. |
void |
remove |
Removes the component at the specified index from this popup menu. |
void |
removeMenuKeyListener |
Removes a MenuKeyListener from the popup menu. |
void |
removePopupMenuListener |
Removes a PopupMenu listener. |
void |
setBorderPainted |
Sets whether the border should be painted. |
static void |
setDefaultLightWeightPopupEnabled |
Sets the default value of the lightWeightPopupEnabled property. |
void |
setInvoker |
Sets the invoker of this popup menu -- the component in which the popup menu menu is to be displayed. |
void |
setLabel |
Sets the popup menu's label. |
void |
setLightWeightPopupEnabled |
Sets the value of the lightWeightPopupEnabled property, which by default is true . |
void |
setLocation |
Sets the location of the upper left corner of the popup menu using x, y coordinates. |
void |
setPopupSize |
Sets the size of the Popup window to the specified width and height. |
void |
setPopupSize |
Sets the size of the Popup window using a Dimension object. |
void |
setSelected |
Sets the currently selected component, This will result in a change to the selection model. |
void |
setSelectionModel |
Sets the model object to handle single selections. |
void |
setUI |
Sets the L&F object that renders this component. |
void |
setVisible |
Sets the visibility of the popup menu. |
void |
show |
Displays the popup menu at the position x,y in the coordinate space of the component invoker. |
void |
updateUI() |
Resets the UI property to a value from the current look and feel. |
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, unregisterKeyboardAction, update
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
public JPopupMenu()
JPopupMenu
without an "invoker".public JPopupMenu(String label)
JPopupMenu
with the specified title.label
- the string that a UI may use to display as a title for the popup menu.public static void setDefaultLightWeightPopupEnabled(boolean aFlag)
lightWeightPopupEnabled
property.aFlag
- true
if popups can be lightweight, otherwise false
public static boolean getDefaultLightWeightPopupEnabled()
defaultLightWeightPopupEnabled
property, which by default is true
.defaultLightWeightPopupEnabled
propertypublic PopupMenuUI getUI()
getUI
in class JComponent
PopupMenuUI
object that renders this component@BeanProperty(hidden=true, visualUpdate=true, description="The UI object that implements the Component\'s LookAndFeel.") public void setUI(PopupMenuUI ui)
ui
- the new PopupMenuUI
L&F objectpublic void updateUI()
updateUI
in class JComponent
@BeanProperty(bound=false) public String getUIClassID()
getUIClassID
in class JComponent
protected void processKeyEvent(KeyEvent evt)
processKeyEvent
in class JComponent
evt
- the key event to be processedpublic SingleSelectionModel getSelectionModel()
selectionModel
property@BeanProperty(bound=false, expert=true, description="The selection model for the popup menu") public void setSelectionModel(SingleSelectionModel model)
model
- the new SingleSelectionModel
public JMenuItem add(JMenuItem menuItem)
menuItem
- the JMenuItem
to addJMenuItem
addedpublic JMenuItem add(String s)
s
- the string for the menu item to be addedJMenuItem
created using s
public JMenuItem add(Action a)
Action
object.a
- the Action
to add to the menuprotected JMenuItem createActionComponent(Action a)
JMenuItem
for Actions
added to the JPopupMenu
.a
- the Action
for the menu item to be addedprotected PropertyChangeListener createActionChangeListener(JMenuItem b)
PropertyChangeListener
which updates the control as changes to the Action
occur.b
- the menu item for which to create a listenerPropertyChangeListener
public void remove(int pos)
remove
in class Container
pos
- the position of the item to be removedIllegalArgumentException
- if the value of pos
< 0, or if the value of pos
is greater than the number of items@BeanProperty(bound=false, expert=true, description="Determines whether lightweight popups are used when possible") public void setLightWeightPopupEnabled(boolean aFlag)
lightWeightPopupEnabled
property, which by default is true
. By default, when a look and feel displays a popup, it can choose to use a lightweight (all-Java) popup. Lightweight popup windows are more efficient than heavyweight (native peer) windows, but lightweight and heavyweight components do not mix well in a GUI. If your application mixes lightweight and heavyweight components, you should disable lightweight popups. Some look and feels might always use heavyweight popups, no matter what the value of this property.aFlag
- false
to disable lightweight popupspublic boolean isLightWeightPopupEnabled()
lightWeightPopupEnabled
property.lightWeightPopupEnabled
propertypublic String getLabel()
@BeanProperty(description="The label for the popup menu.") public void setLabel(String label)
label
- a string specifying the label for the popup menupublic void addSeparator()
public void insert(Action a, int index)
Action
object at a given position.a
- the Action
object to insertindex
- specifies the position at which to insert the Action
, where 0 is the firstIllegalArgumentException
- if index
< 0public void insert(Component component, int index)
component
- the Component
to insertindex
- specifies the position at which to insert the component, where 0 is the firstIllegalArgumentException
- if index
< 0public void addPopupMenuListener(PopupMenuListener l)
PopupMenu
listener.l
- the PopupMenuListener
to addpublic void removePopupMenuListener(PopupMenuListener l)
PopupMenu
listener.l
- the PopupMenuListener
to remove@BeanProperty(bound=false) public PopupMenuListener[] getPopupMenuListeners()
PopupMenuListener
s added to this JMenuItem with addPopupMenuListener().PopupMenuListener
s added or an empty array if no listeners have been addedpublic void addMenuKeyListener(MenuKeyListener l)
MenuKeyListener
to the popup menu.l
- the MenuKeyListener
to be addedpublic void removeMenuKeyListener(MenuKeyListener l)
MenuKeyListener
from the popup menu.l
- the MenuKeyListener
to be removed@BeanProperty(bound=false) public MenuKeyListener[] getMenuKeyListeners()
MenuKeyListener
s added to this JPopupMenu with addMenuKeyListener().MenuKeyListener
s added or an empty array if no listeners have been addedprotected void firePopupMenuWillBecomeVisible()
PopupMenuListener
s that this popup menu will become visible.protected void firePopupMenuWillBecomeInvisible()
PopupMenuListener
s that this popup menu will become invisible.protected void firePopupMenuCanceled()
PopupMenuListeners
that this popup menu is cancelled.public void pack()
@BeanProperty(description="Makes the popup visible") public void setVisible(boolean b)
setVisible
in class JComponent
b
- true to make the popup visible, or false to hide itpublic boolean isVisible()
@BeanProperty(description="The location of the popup menu.") public void setLocation(int x, int y)
The method changes the geometry-related data. Therefore, the native windowing system may ignore such requests, or it may modify the requested data, so that the JPopupMenu
object is placed and sized in a way that corresponds closely to the desktop settings.
setLocation
in class Component
x
- the x coordinate of the popup's new position in the screen's coordinate spacey
- the y coordinate of the popup's new position in the screen's coordinate spacepublic Component getInvoker()
Component
in which the popup menu is displayed@BeanProperty(bound=false, expert=true, description="The invoking component for the popup menu") public void setInvoker(Component invoker)
invoker
- the Component
in which the popup menu is displayedpublic void show(Component invoker, int x, int y)
invoker
- the component in whose space the popup menu is to appearx
- the x coordinate in invoker's coordinate space at which the popup menu is to be displayedy
- the y coordinate in invoker's coordinate space at which the popup menu is to be displayed@Deprecated public Component getComponentAtIndex(int i)
Container.getComponent(int)
i
- the index of the component, where 0 is the firstComponent
at that indexpublic int getComponentIndex(Component c)
c
- the Component
to find@BeanProperty(description="The size of the popup menu") public void setPopupSize(Dimension d)
Dimension
object. This is equivalent to setPreferredSize(d)
.d
- the Dimension
specifying the new size of this component.@BeanProperty(description="The size of the popup menu") public void setPopupSize(int width, int height)
setPreferredSize(new Dimension(width, height))
.width
- the new width of the Popup in pixelsheight
- the new height of the Popup in pixels@BeanProperty(expert=true, hidden=true, description="The selected component on the popup menu") public void setSelected(Component sel)
sel
- the Component
to selectpublic boolean isBorderPainted()
@BeanProperty(bound=false, description="Is the border of the popup menu painted") public void setBorderPainted(boolean b)
b
- if true, the border is painted.protected void paintBorder(Graphics g)
borderPainted
property is true
.paintBorder
in class JComponent
g
- the Graphics
object@BeanProperty(bound=false) public Insets getMargin()
Insets
object containing the margin values.protected String paramString()
JPopupMenu
. This method is intended to be used only for debugging purposes, and the content and format of the returned string may vary between implementations. The returned string may be empty but may not be null
.paramString
in class JComponent
JPopupMenu
.@BeanProperty(bound=false) public AccessibleContext getAccessibleContext()
getAccessibleContext
in interface Accessible
getAccessibleContext
in class Component
public void processMouseEvent(MouseEvent event, MenuElement[] path, MenuSelectionManager manager)
MenuElement
interface, but it not implemented.processMouseEvent
in interface MenuElement
event
- a MouseEvent
to be processedpath
- the path of the receiving element in the menu hierarchymanager
- the MenuSelectionManager
for the menu hierarchypublic void processKeyEvent(KeyEvent e, MenuElement[] path, MenuSelectionManager manager)
MenuSelectionManager
and changes the menu selection, if necessary, by using MenuSelectionManager
's API. Note: you do not have to forward the event to sub-components. This is done automatically by the MenuSelectionManager
.
processKeyEvent
in interface MenuElement
e
- a KeyEvent
path
- the MenuElement
path arraymanager
- the MenuSelectionManager
@BeanProperty(bound=false) public MenuElement[] getSubElements()
MenuElement
s containing the submenu for this menu component. It will only return items conforming to the JMenuElement
interface. If popup menu is null
returns an empty array. This method is required to conform to the MenuElement
interface.getSubElements
in interface MenuElement
MenuElement
objectspublic Component getComponent()
JPopupMenu
component.getComponent
in interface MenuElement
JPopupMenu
objectpublic boolean isPopupTrigger(MouseEvent e)
MouseEvent
is considered a popup trigger by the JPopupMenu
's currently installed UI.e
- a MouseEvent
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.desktop/javax/swing/JPopupMenu.html
Container.getComponent(int)