public class JPopupMenu extends JComponent implements Accessible, MenuElement
JPopupMenu用于当用户选择菜单栏上的项目时出现的菜单。
它也用于当选择激活它的菜单项时出现的“拉右”菜单。
最后,一个JPopupMenu也可以在你想要菜单出现的地方使用。
例如,当用户在指定区域中右键单击时。
有关使用弹出菜单的信息和示例,请参阅Java教程中的 How to Use Menus 。
警告: Swing不是线程安全的。 有关更多信息,请参阅Swing's Threading Policy 。
警告:此类的序列化对象与将来的Swing版本不兼容。 当前的序列化支持适用于运行相同版本的Swing的应用程序之间的短期存储或RMI。 从1.4开始,对所有JavaBeans的长期存储的支持已经添加到java.beans包中。 请参阅XMLEncoder 。
| Modifier and Type | Class and Description |
|---|---|
protected class |
JPopupMenu.AccessibleJPopupMenu
这个类实现了可访问性支持
JPopupMenu类。
|
static class |
JPopupMenu.Separator
弹出菜单特定的分隔符。
|
JComponent.AccessibleJComponentContainer.AccessibleAWTContainerComponent.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategylistenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWaccessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH| Constructor and Description |
|---|
JPopupMenu()
构造一个没有“调用者”的
JPopupMenu 。
|
JPopupMenu(String label)
构造一个
JPopupMenu具有指定标题。
|
| Modifier and Type | Method and Description |
|---|---|
JMenuItem |
add(Action a)
在菜单末尾附加一个新菜单项,该菜单将调度指定的
Action对象。
|
JMenuItem |
add(JMenuItem menuItem)
将指定的菜单项追加到此菜单的末尾。
|
JMenuItem |
add(String s)
创建一个带有指定文本的新菜单项,并将其附加到此菜单的末尾。
|
void |
addMenuKeyListener(MenuKeyListener l)
添加一个
MenuKeyListener到弹出菜单。
|
void |
addPopupMenuListener(PopupMenuListener l)
添加一个
PopupMenu监听器。
|
void |
addSeparator()
在菜单末尾附加一个新的分隔符。
|
protected PropertyChangeListener |
createActionChangeListener(JMenuItem b)
返回正确配置的
PropertyChangeListener ,更新控件,因为发生了
Action更改。
|
protected JMenuItem |
createActionComponent(Action a)
工厂方法创建
JMenuItem为
Actions添加到
JPopupMenu 。
|
protected void |
firePopupMenuCanceled()
通知
PopupMenuListeners该弹出菜单被取消。
|
protected void |
firePopupMenuWillBecomeInvisible()
通知
PopupMenuListener这个弹出菜单将变得不可见。
|
protected void |
firePopupMenuWillBecomeVisible()
通知
PopupMenuListener s这个弹出菜单将变得可见。
|
AccessibleContext |
getAccessibleContext()
获取与此JPopupMenu关联的AccessibleContext。
|
Component |
getComponent()
返回此
JPopupMenu组件。
|
Component |
getComponentAtIndex(int i)
|
int |
getComponentIndex(Component c)
返回指定组件的索引。
|
static boolean |
getDefaultLightWeightPopupEnabled()
获取
defaultLightWeightPopupEnabled属性,默认为
true 。
|
Component |
getInvoker()
返回该弹出菜单的“调用者”组件。
|
String |
getLabel()
返回弹出菜单的标签
|
Insets |
getMargin()
返回弹出菜单的边框和容器之间的边距(以像素为单位)。
|
MenuKeyListener[] |
getMenuKeyListeners()
返回使用addMenuKeyListener()添加到此JPopupMenu的所有
MenuKeyListener的数组。
|
PopupMenuListener[] |
getPopupMenuListeners()
返回使用addPopupMenuListener()添加到该JMenuItem的所有
PopupMenuListener的数组。
|
SingleSelectionModel |
getSelectionModel()
返回处理单个选择的模型对象。
|
MenuElement[] |
getSubElements()
返回包含此菜单组件子菜单的
MenuElement s数组。
|
PopupMenuUI |
getUI()
返回渲染此组件的外观和感觉(L&F)对象。
|
String |
getUIClassID()
返回呈现此组件的L&F类的名称。
|
void |
insert(Action a, int index)
在给定位置插入指定的
Action对象的菜单项。
|
void |
insert(Component component, int index)
将指定的组件插入到给定位置的菜单中。
|
boolean |
isBorderPainted()
检查边框是否应该涂漆。
|
boolean |
isLightWeightPopupEnabled()
获取
lightWeightPopupEnabled属性。
|
boolean |
isPopupTrigger(MouseEvent e)
如果
MouseEvent被JPopupMenu当前安装的UI
JPopupMenu弹出式触发器,则返回true。
|
boolean |
isVisible()
如果弹出菜单可见(正在显示),则返回true。
|
void |
menuSelectionChanged(boolean isIncluded)
当菜单选择更改以激活或停用此菜单时发生消息。
|
void |
pack()
放出容器,使其使用显示其内容所需的最小空间。
|
protected void |
paintBorder(Graphics g)
如果
borderPainted属性为
true则绘制弹出菜单的边框。
|
protected String |
paramString()
返回此
JPopupMenu的字符串表示
JPopupMenu 。
|
protected void |
processFocusEvent(FocusEvent evt)
通过将其分发到任何已注册的
FocusListener对象来处理发生在该组件上的焦点事件。
|
protected void |
processKeyEvent(KeyEvent evt)
处理关键笔划事件,如助记符和加速器。
|
void |
processKeyEvent(KeyEvent e, MenuElement[] path, MenuSelectionManager manager)
处理从MenuSelectionManager转发的密钥事件,并根据
MenuSelectionManager更改菜单选项,方法是使用
MenuSelectionManager的API。
|
void |
processMouseEvent(MouseEvent event, MenuElement[] path, MenuSelectionManager manager)
这种方法需要符合
MenuElement接口,但是没有实现。
|
void |
remove(int pos)
从该弹出菜单中删除指定索引处的组件。
|
void |
removeMenuKeyListener(MenuKeyListener l)
从弹出菜单中删除
MenuKeyListener 。
|
void |
removePopupMenuListener(PopupMenuListener l)
删除一个
PopupMenu监听器。
|
void |
setBorderPainted(boolean b)
设置是否应绘制边框。
|
static void |
setDefaultLightWeightPopupEnabled(boolean aFlag)
设置
lightWeightPopupEnabled属性的默认值。
|
void |
setInvoker(Component invoker)
设置此弹出菜单的调用者 - 要显示弹出菜单菜单的组件。
|
void |
setLabel(String label)
设置弹出菜单的标签。
|
void |
setLightWeightPopupEnabled(boolean aFlag)
设置
lightWeightPopupEnabled属性的值,默认值为
true 。
|
void |
setLocation(int x, int y)
使用x,y坐标设置弹出菜单左上角的位置。
|
void |
setPopupSize(Dimension d)
使用
Dimension对象设置弹出窗口的大小。
|
void |
setPopupSize(int width, int height)
将Popup窗口的大小设置为指定的宽度和高度。
|
void |
setSelected(Component sel)
设置当前选择的组件,这将导致选择模型的更改。
|
void |
setSelectionModel(SingleSelectionModel model)
设置模型对象以处理单个选择。
|
void |
setUI(PopupMenuUI ui)
设置渲染此组件的L&F对象。
|
void |
setVisible(boolean b)
设置弹出菜单的可见性。
|
void |
show(Component invoker, int x, int y)
在组件调用者的坐标空间中的位置x,y处显示弹出式菜单。
|
void |
updateUI()
将UI属性重置为当前外观的值。
|
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, 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, updateadd, 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, validateTreeaction, 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, 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, getPeer, 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, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCyclepublic JPopupMenu()
JPopupMenu 。
public JPopupMenu(String label)
JPopupMenu具有指定标题。
label - UI可能用于显示为弹出菜单的标题的字符串。
public static void setDefaultLightWeightPopupEnabled(boolean aFlag)
lightWeightPopupEnabled属性的默认值。
aFlag -
true如果弹出窗口可以轻量化,否则
false
getDefaultLightWeightPopupEnabled() ,
setLightWeightPopupEnabled(boolean)
public static boolean getDefaultLightWeightPopupEnabled()
defaultLightWeightPopupEnabled属性,默认为
true 。
defaultLightWeightPopupEnabled属性
setDefaultLightWeightPopupEnabled(boolean)
public PopupMenuUI getUI()
PopupMenuUI对象
public void setUI(PopupMenuUI ui)
ui - 新的
PopupMenuUI L&F对象
UIDefaults.getUI(javax.swing.JComponent)
public void updateUI()
updateUI在类
JComponent
JComponent.updateUI()
public String getUIClassID()
getUIClassID在
JComponent
JComponent.getUIClassID() ,
UIDefaults.getUI(javax.swing.JComponent)
protected void processFocusEvent(FocusEvent evt)
Component
FocusListener对象来处理在此组件上发生的焦点事件。
除非为此组件启用聚焦事件,否则不会调用此方法。 当以下情况发生时,聚焦事件将被启用:
FocusListener对象通过addFocusListener 。 enableEvents启用。 如果对于Component启用了焦点事件,当前的KeyboardFocusManager将确定是否应将焦点事件发送到已注册的FocusListener对象。 如果要发送事件, KeyboardFocusManager调用Component的dispatchEvent方法,这将调用Component的processFocusEvent方法。
如果Component启用了焦点事件,则调用Component的dispatchEvent方法以FocusEvent作为参数,将导致调用Component的processFocusEvent方法,而不管当前的KeyboardFocusManager 。
请注意,如果事件参数为null则行为未指定,可能会导致异常。
protected void processKeyEvent(KeyEvent evt)
processKeyEvent在
JComponent
evt - 要处理的关键事件
KeyEvent , KeyListener , KeyboardFocusManager , DefaultKeyboardFocusManager , Component.processEvent(java.awt.AWTEvent) , Component.dispatchEvent(java.awt.AWTEvent) , Component.addKeyListener(java.awt.event.KeyListener) , Component.enableEvents(long) , Component.isShowing()
public SingleSelectionModel getSelectionModel()
selectionModel属性
SingleSelectionModel
public void setSelectionModel(SingleSelectionModel model)
model - 全新
SingleSelectionModel
SingleSelectionModel
public JMenuItem add(JMenuItem menuItem)
menuItem - 要添加的
JMenuItem
JMenuItem加了
public JMenuItem add(Action a)
Action对象。
a - 添加到菜单中的
Action
Action
protected JMenuItem createActionComponent(Action a)
Actions创建
JMenuItem工厂方法添加到
JPopupMenu 。
a - 要添加的菜单项的
Action
Action
protected PropertyChangeListener createActionChangeListener(JMenuItem b)
PropertyChangeListener ,更新控件,因为发生了
Action更改。
public void remove(int pos)
remove在类
Container
pos - 要删除的项目的位置
IllegalArgumentException - 如果值为
pos <0,或者如果
pos的值大于项数
Container.add(java.awt.Component) ,
Container.invalidate() ,
Container.validate() ,
Container.getComponentCount()
public void setLightWeightPopupEnabled(boolean aFlag)
lightWeightPopupEnabled属性的值,默认值为true 。
默认情况下,当外观显示弹出窗口时,可以选择使用轻量级(全Java)弹出窗口。
轻量级弹出窗口比重量级(本机对等体)窗口更有效,但轻量级和重量级组件在GUI中不能很好地混合。
如果您的应用程序混合轻量级和重量级组件,则应禁用轻量级弹出窗口。
一些看起来和感觉可能总是使用重量级的弹出窗口,无论这个属性的价值。
aFlag -
false以禁用轻量级弹出窗口
isLightWeightPopupEnabled()
public boolean isLightWeightPopupEnabled()
lightWeightPopupEnabled属性。
lightWeightPopupEnabled属性
setLightWeightPopupEnabled(boolean)
public String getLabel()
setLabel(java.lang.String)
public void setLabel(String label)
label - 一个字符串,指定弹出菜单的标签
setLabel(java.lang.String)
public void addSeparator()
public void insert(Action a, int index)
Action对象的菜单项。
a - 要插入的
Action对象
index -指定了在要插入的位置
Action ,其中0是第一
IllegalArgumentException - 如果
index <0
Action
public void insert(Component component, int index)
component - 要插入的
Component
index - 指定插入组件的位置,其中0是第一个
IllegalArgumentException - 如果
index <0
public void addPopupMenuListener(PopupMenuListener l)
PopupMenu监听器。
l - 要添加的
PopupMenuListener
public void removePopupMenuListener(PopupMenuListener l)
PopupMenu监听器。
l - 要删除的
PopupMenuListener
public PopupMenuListener[] getPopupMenuListeners()
PopupMenuListener的数组。
PopupMenuListener被添加或一个空的数组,如果没有听众被添加
public void addMenuKeyListener(MenuKeyListener l)
MenuKeyListener 。
l - 要加入的
MenuKeyListener
public void removeMenuKeyListener(MenuKeyListener l)
MenuKeyListener 。
l - 要删除的
MenuKeyListener
public MenuKeyListener[] getMenuKeyListeners()
MenuKeyListener的数组。
MenuKeyListener如果没有添加侦听器,则为空数组
protected void firePopupMenuWillBecomeVisible()
PopupMenuListener s这个弹出菜单将变得可见。
protected void firePopupMenuWillBecomeInvisible()
PopupMenuListener s这个弹出菜单将变得不可见。
protected void firePopupMenuCanceled()
PopupMenuListeners该弹出菜单被取消。
public void pack()
public void setVisible(boolean b)
setVisible在
JComponent
b - true使弹出窗口可见,或false隐藏它
Component.isVisible() ,
Component.invalidate()
public boolean isVisible()
isVisible在
Component
true如果组件可见,
false false
Component.setVisible(boolean)
public void setLocation(int x,
int y)
该方法更改几何相关数据。 因此,本地窗口系统可以忽略这样的请求,或者它可以修改所请求的数据,使得JPopupMenu对象被放置并且以与桌面设置紧密相对应的方式被调整大小。
setLocation在类
Component
x - 弹出窗口在坐标空间中的新位置的x坐标
y - 弹出窗口在坐标空间中的新位置的y坐标
Component.getLocation() ,
Component.setBounds(int, int, int, int) ,
Component.invalidate()
public Component getInvoker()
Component在其中显示弹出菜单
public void setInvoker(Component invoker)
invoker -在
Component在其中显示弹出菜单
public void show(Component invoker, int x, int y)
invoker - 弹出菜单要显示的空间中的组件
x - 要显示弹出菜单的调用者坐标空间中的x坐标
y - 要显示弹出菜单的调用者坐标空间中的y坐标
@Deprecated public Component getComponentAtIndex(int i)
i -
i的索引,其中0是第一个
Component
public int getComponentIndex(Component c)
c - 找
Component
public void setPopupSize(Dimension d)
Dimension对象设置弹出窗口的大小。
这相当于setPreferredSize(d) 。
d - 指定
Dimension组件的新大小的Dimension。
public void setPopupSize(int width,
int height)
setPreferredSize(new Dimension(width, height)) 。
width - 弹出窗口的新宽度(以像素为单位)
height - 弹出窗口的新高度,以像素为单位
public void setSelected(Component sel)
sel -
Component选择
public boolean isBorderPainted()
setBorderPainted(boolean)
public void setBorderPainted(boolean b)
b - 如果为true,则绘制边框。
isBorderPainted()
protected void paintBorder(Graphics g)
borderPainted属性为
true则绘制弹出菜单的边框。
paintBorder在
JComponent
g -
Graphics对象
JComponent.paint(java.awt.Graphics) ,
JComponent.setBorder(javax.swing.border.Border)
public Insets getMargin()
Insets边距值的
Insets对象。
protected String paramString()
JPopupMenu的字符串表示JPopupMenu 。
该方法仅用于调试目的,并且返回的字符串的内容和格式可能因实现而异。
返回的字符串可能为空,但可能不是null 。
paramString在
JComponent
JPopupMenu的字符串表示
JPopupMenu 。
public AccessibleContext getAccessibleContext()
getAccessibleContext在界面
Accessible
getAccessibleContext在
Component
public void processMouseEvent(MouseEvent event, MenuElement[] path, MenuSelectionManager manager)
MenuElement接口所必需的,但没有实现。
public void processKeyEvent(KeyEvent e, MenuElement[] path, MenuSelectionManager manager)
MenuSelectionManager更改菜单选项,方法是使用MenuSelectionManager的API。
注意:您不必将事件转发到子组件。 这是由MenuSelectionManager 。
processKeyEvent在接口
MenuElement
e - a
KeyEvent
path -
MenuElement路径数组
manager -
MenuSelectionManager
public void menuSelectionChanged(boolean isIncluded)
javax.swing.MenuElement接口。
覆盖MenuElement.menuSelectionChanged 。
menuSelectionChanged在界面
MenuElement
isIncluded - 如果此菜单处于活动状态,则为true,否则为false
MenuElement.menuSelectionChanged(boolean)
public MenuElement[] getSubElements()
MenuElement包含此菜单组件的子菜单秒。
它将只返回符合JMenuElement接口的条目。
如果弹出菜单是null返回一个空数组。
该方法需要符合MenuElement接口。
getSubElements在接口
MenuElement
MenuElement对象
MenuElement.getSubElements()
public Component getComponent()
JPopupMenu组件。
getComponent在界面
MenuElement
JPopupMenu对象
MenuElement.getComponent()
public boolean isPopupTrigger(MouseEvent e)
MouseEvent被JPopupMenu当前安装的UI
JPopupMenu弹出式触发器,则返回true。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.