- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.AbstractButton
-
- javax.swing.JMenuItem
-
- javax.swing.JMenu
-
- util.ui.ScrollableMenu
-
- All Implemented Interfaces:
java.awt.image.ImageObserver
,java.awt.ItemSelectable
,java.awt.MenuContainer
,java.io.Serializable
,javax.accessibility.Accessible
,javax.swing.MenuElement
,javax.swing.SwingConstants
public class ScrollableMenu extends javax.swing.JMenu
An implementation of a scrollable menu -- a popup window containingJMenuItem
s that is displayed when the user selects an item on theJMenuBar
. In addition toJMenuItem
s, aJMenu
can also containJSeparator
s.In essence, a menu is a button with an associated
JPopupMenu
. When the "button" is pressed, theJPopupMenu
appears. If the "button" is on theJMenuBar
, the menu is a top-level window. If the "button" is another menu item, then theJPopupMenu
is "pull-right" menu. If the menu contains more items than displayable on the screen the menu becomes scrollable by hiding some of the items and adding an add and a down arrow at both ends of the menu to scroll the menu with this arrows. description: A popup window containing menu items displayed in a menu bar.- See Also:
JPopupMenu
, Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class javax.swing.JMenu
javax.swing.JMenu.AccessibleJMenu, javax.swing.JMenu.WinListener
-
Nested classes/interfaces inherited from class javax.swing.JMenuItem
javax.swing.JMenuItem.AccessibleJMenuItem
-
Nested classes/interfaces inherited from class javax.swing.AbstractButton
javax.swing.AbstractButton.AccessibleAbstractButton, javax.swing.AbstractButton.ButtonChangeListener
-
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
-
-
Field Summary
-
Fields inherited from class javax.swing.AbstractButton
actionListener, BORDER_PAINTED_CHANGED_PROPERTY, changeEvent, changeListener, CONTENT_AREA_FILLED_CHANGED_PROPERTY, DISABLED_ICON_CHANGED_PROPERTY, DISABLED_SELECTED_ICON_CHANGED_PROPERTY, FOCUS_PAINTED_CHANGED_PROPERTY, HORIZONTAL_ALIGNMENT_CHANGED_PROPERTY, HORIZONTAL_TEXT_POSITION_CHANGED_PROPERTY, ICON_CHANGED_PROPERTY, itemListener, MARGIN_CHANGED_PROPERTY, MNEMONIC_CHANGED_PROPERTY, model, MODEL_CHANGED_PROPERTY, PRESSED_ICON_CHANGED_PROPERTY, ROLLOVER_ENABLED_CHANGED_PROPERTY, ROLLOVER_ICON_CHANGED_PROPERTY, ROLLOVER_SELECTED_ICON_CHANGED_PROPERTY, SELECTED_ICON_CHANGED_PROPERTY, TEXT_CHANGED_PROPERTY, VERTICAL_ALIGNMENT_CHANGED_PROPERTY, VERTICAL_TEXT_POSITION_CHANGED_PROPERTY
-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
Fields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
-
-
Constructor Summary
Constructors Constructor Description ScrollableMenu()
Constructs a newJMenu
with no text.ScrollableMenu(java.lang.String menuTitle)
Constructs a newJMenu
with the supplied string as its text.ScrollableMenu(java.lang.String s, boolean b)
Constructs a newJMenu
with the supplied string as its text and specified as a tear-off menu or not.ScrollableMenu(javax.swing.Action a)
Constructs a newJMenu
whose properties are taken from theAction
supplied.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.awt.Component
add(java.awt.Component component)
Appends a component to the end of this menu.java.awt.Component
add(java.awt.Component component, int index)
Adds the specified component to this container at the given position.javax.swing.JMenuItem
add(javax.swing.JMenuItem menuItem)
Appends a menu item to the end of this menu.protected void
addScrollableComponent(java.awt.Component component)
Add the specified component at the end of this scrollable menuprotected void
addScrollableComponent(java.awt.Component component, int pos)
Add the specified component to this scrollable menuvoid
addSeparator()
Appends a new separator to the end of the menu.javax.swing.JMenuItem
getItem(int pos)
Returns theJMenuItem
at the specified position.int
getItemCount()
Returns the number of items on the menu, including separators.java.awt.Component
getMenuComponent(int n)
Returns the component at positionn
.int
getMenuComponentCount()
Returns the number of components on the menu.java.awt.Component[]
getMenuComponents()
Returns an array ofComponent
s of the menu's subcomponents.javax.swing.MenuElement[]
getSubElements()
void
insert(java.lang.String s, int pos)
javax.swing.JMenuItem
insert(javax.swing.Action a, int pos)
Inserts a new menu item attached to the specifiedAction
object at a given position.javax.swing.JMenuItem
insert(javax.swing.JMenuItem menuItem, int pos)
Inserts the specifiedJMenuitem
at a given position.boolean
isMenuComponent(java.awt.Component component)
Returns true if the specified component exists in the submenu hierarchy.void
remove(int pos)
Removes the menu item at the specified index from this menu.void
remove(java.awt.Component component)
Removes the componentc
from this menu.void
remove(javax.swing.JMenuItem menuItem)
Removes the specified menu item from this menu.void
removeAll()
Removes all menu items from this menu.protected void
removeScrollableComponent(java.awt.Component component)
Remove the specified component from this scrollable menu-
Methods inherited from class javax.swing.JMenu
add, add, addMenuListener, applyComponentOrientation, createActionChangeListener, createActionComponent, createWinListener, doClick, fireMenuCanceled, fireMenuDeselected, fireMenuSelected, getAccessibleContext, getComponent, getDelay, getMenuListeners, getPopupMenu, getPopupMenuOrigin, getUIClassID, insertSeparator, isPopupMenuVisible, isSelected, isTearOff, isTopLevelMenu, menuSelectionChanged, paramString, processKeyEvent, removeMenuListener, setAccelerator, setComponentOrientation, setDelay, setMenuLocation, setModel, setPopupMenuVisible, setSelected, updateUI
-
Methods inherited from class javax.swing.JMenuItem
actionPropertyChanged, addMenuDragMouseListener, addMenuKeyListener, configurePropertiesFromAction, fireMenuDragMouseDragged, fireMenuDragMouseEntered, fireMenuDragMouseExited, fireMenuDragMouseReleased, fireMenuKeyPressed, fireMenuKeyReleased, fireMenuKeyTyped, getAccelerator, getMenuDragMouseListeners, getMenuKeyListeners, init, isArmed, processKeyEvent, processMenuDragMouseEvent, processMenuKeyEvent, processMouseEvent, removeMenuDragMouseListener, removeMenuKeyListener, setArmed, setEnabled, setUI
-
Methods inherited from class javax.swing.AbstractButton
addActionListener, addChangeListener, addImpl, addItemListener, checkHorizontalKey, checkVerticalKey, createActionListener, createActionPropertyChangeListener, createChangeListener, createItemListener, doClick, fireActionPerformed, fireItemStateChanged, fireStateChanged, getAction, getActionCommand, getActionListeners, getChangeListeners, getDisabledIcon, getDisabledSelectedIcon, getDisplayedMnemonicIndex, getHideActionText, getHorizontalAlignment, getHorizontalTextPosition, getIcon, getIconTextGap, getItemListeners, getLabel, getMargin, getMnemonic, getModel, getMultiClickThreshhold, getPressedIcon, getRolloverIcon, getRolloverSelectedIcon, getSelectedIcon, getSelectedObjects, getText, getUI, getVerticalAlignment, getVerticalTextPosition, imageUpdate, isBorderPainted, isContentAreaFilled, isFocusPainted, isRolloverEnabled, paintBorder, removeActionListener, removeChangeListener, removeItemListener, removeNotify, setAction, setActionCommand, setBorderPainted, setContentAreaFilled, setDisabledIcon, setDisabledSelectedIcon, setDisplayedMnemonicIndex, setFocusPainted, setHideActionText, setHorizontalAlignment, setHorizontalTextPosition, setIcon, setIconTextGap, setLabel, setLayout, setMargin, setMnemonic, setMnemonic, setMultiClickThreshhold, setPressedIcon, setRolloverEnabled, setRolloverIcon, setRolloverSelectedIcon, setSelectedIcon, setText, setUI, setVerticalAlignment, setVerticalTextPosition
-
Methods inherited from class javax.swing.JComponent
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, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
-
Methods inherited from class java.awt.Container
add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, 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, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, transferFocusDownCycle, validate, validateTree
-
Methods inherited from class java.awt.Component
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, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, 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, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Constructor Detail
-
ScrollableMenu
public ScrollableMenu()
Constructs a newJMenu
with no text.
-
ScrollableMenu
public ScrollableMenu(javax.swing.Action a)
Constructs a newJMenu
whose properties are taken from theAction
supplied.- Parameters:
a
- anAction
- Since:
- 1.3
-
ScrollableMenu
public ScrollableMenu(java.lang.String s, boolean b)
Constructs a newJMenu
with the supplied string as its text and specified as a tear-off menu or not.- Parameters:
s
- the text for the menu labelb
- can the menu be torn off (not yet implemented)
-
ScrollableMenu
public ScrollableMenu(java.lang.String menuTitle)
Constructs a newJMenu
with the supplied string as its text.- Parameters:
menuTitle
- the text for the menu label
-
-
Method Detail
-
add
public javax.swing.JMenuItem add(javax.swing.JMenuItem menuItem)
Appends a menu item to the end of this menu. Returns the menu item added.- Overrides:
add
in classjavax.swing.JMenu
- Parameters:
menuItem
- theJMenuitem
to be added- Returns:
- the
JMenuItem
added
-
add
public java.awt.Component add(java.awt.Component component)
Appends a component to the end of this menu. Returns the component added.- Overrides:
add
in classjavax.swing.JMenu
- Parameters:
component
- theComponent
to add- Returns:
- the
Component
added
-
add
public java.awt.Component add(java.awt.Component component, int index)
Adds the specified component to this container at the given position. Ifindex
equals -1, the component will be appended to the end.- Overrides:
add
in classjavax.swing.JMenu
- Parameters:
component
- theComponent
to addindex
- the position at which to insert the component- Returns:
- the
Component
added - See Also:
remove(Component)
,Container.add(Component, int)
-
insert
public void insert(java.lang.String s, int pos)
- Overrides:
insert
in classjavax.swing.JMenu
-
insert
public javax.swing.JMenuItem insert(javax.swing.JMenuItem menuItem, int pos)
Inserts the specifiedJMenuitem
at a given position.- Overrides:
insert
in classjavax.swing.JMenu
- Parameters:
menuItem
- theJMenuitem
to addpos
- an integer specifying the position at which to add the newJMenuitem
- Returns:
- the new menu item
- Throws:
java.lang.IllegalArgumentException
- if the value ofpos
< 0
-
insert
public javax.swing.JMenuItem insert(javax.swing.Action a, int pos)
Inserts a new menu item attached to the specifiedAction
object at a given position.- Overrides:
insert
in classjavax.swing.JMenu
- Parameters:
a
- theAction
object for the menu item to addpos
- an integer specifying the position at which to add the new menu item- Throws:
java.lang.IllegalArgumentException
- if the value ofpos
< 0
-
getItem
public javax.swing.JMenuItem getItem(int pos)
Returns theJMenuItem
at the specified position. If the component atpos
is not a menu item,null
is returned. This method is included for AWT compatibility.- Overrides:
getItem
in classjavax.swing.JMenu
- Parameters:
pos
- an integer specifying the position- Returns:
- the menu item at the specified position; or
null
if the item as the specified position is not a menu item - Throws:
java.lang.IllegalArgumentException
- if the value ofpos
< 0
-
getItemCount
public int getItemCount()
Returns the number of items on the menu, including separators. This method is included for AWT compatibility.- Overrides:
getItemCount
in classjavax.swing.JMenu
- Returns:
- an integer equal to the number of items on the menu
- See Also:
getMenuComponentCount()
-
remove
public void remove(javax.swing.JMenuItem menuItem)
Removes the specified menu item from this menu. If there is no popup menu, this method will have no effect.- Overrides:
remove
in classjavax.swing.JMenu
- Parameters:
menuItem
- theJMenuItem
to be removed from the menu
-
remove
public void remove(int pos)
Removes the menu item at the specified index from this menu.- Overrides:
remove
in classjavax.swing.JMenu
- Parameters:
pos
- the position of the item to be removed- Throws:
java.lang.IllegalArgumentException
- if the value ofpos
< 0, or ifpos
is greater than the number of menu items
-
remove
public void remove(java.awt.Component component)
Removes the componentc
from this menu.- Overrides:
remove
in classjavax.swing.JMenu
- Parameters:
component
- the component to be removed
-
removeAll
public void removeAll()
Removes all menu items from this menu.- Overrides:
removeAll
in classjavax.swing.JMenu
-
getMenuComponentCount
public int getMenuComponentCount()
Returns the number of components on the menu.- Overrides:
getMenuComponentCount
in classjavax.swing.JMenu
- Returns:
- an integer containing the number of components on the menu
-
getMenuComponent
public java.awt.Component getMenuComponent(int n)
Returns the component at positionn
.- Overrides:
getMenuComponent
in classjavax.swing.JMenu
- Parameters:
n
- the position of the component to be returned- Returns:
- the component requested, or
null
if there is no popup menu
-
getMenuComponents
public java.awt.Component[] getMenuComponents()
Returns an array ofComponent
s of the menu's subcomponents. Note that this returns allComponent
s in the popup menu, including separators.- Overrides:
getMenuComponents
in classjavax.swing.JMenu
- Returns:
- an array of
Component
s or an empty array if there is no popup menu
-
isMenuComponent
public boolean isMenuComponent(java.awt.Component component)
Returns true if the specified component exists in the submenu hierarchy.- Overrides:
isMenuComponent
in classjavax.swing.JMenu
- Parameters:
component
- theComponent
to be tested- Returns:
- true if the
Component
exists, false otherwise
-
addSeparator
public void addSeparator()
Appends a new separator to the end of the menu.- Overrides:
addSeparator
in classjavax.swing.JMenu
-
addScrollableComponent
protected void addScrollableComponent(java.awt.Component component, int pos)
Add the specified component to this scrollable menu- Parameters:
component
- theComponent
to addpos
- an integer specifying the position at which to add the new component
-
addScrollableComponent
protected void addScrollableComponent(java.awt.Component component)
Add the specified component at the end of this scrollable menu- Parameters:
component
- theComponent
to add
-
removeScrollableComponent
protected void removeScrollableComponent(java.awt.Component component)
Remove the specified component from this scrollable menu- Parameters:
component
- theComponent
to remove
-
getSubElements
public javax.swing.MenuElement[] getSubElements()
- Specified by:
getSubElements
in interfacejavax.swing.MenuElement
- Overrides:
getSubElements
in classjavax.swing.JMenu
-
-