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.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 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, 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, 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, transferFocusUpCycle
public 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。