📄 menucomponent.java
字号:
/** * Returns a debugging string for this component */protected StringparamString(){ return "name=" + getName();}/** * Gets the AccessibleContext associated with this <code>MenuComponent</code>. * As an abstract class, we return null. Concrete subclasses should return * their implementation of the accessibility context. * * @return null. */public AccessibleContext getAccessibleContext(){ return null;}/** * This class provides a base for the accessibility support of menu * components. * * @author Andrew John Hughes (gnu_andrew@member.fsf.org) */protected abstract class AccessibleAWTMenuComponent extends AccessibleContext implements Serializable, AccessibleComponent, AccessibleSelection{ /** * Compatible with JDK 1.4.2 revision 5 */ private static final long serialVersionUID = -4269533416223798698L; /** * This is the default constructor. It should be called by * concrete subclasses to ensure necessary groundwork is completed. */ protected AccessibleAWTMenuComponent() { } /** * Replaces or supplements the component's selection with the * <code>Accessible</code> child at the supplied index. If * the component supports multiple selection, the child is * added to the current selection. Otherwise, the current * selection becomes the specified child. If the child is * already selected, nothing happens. * <br /> * <br /> * As the existence of children can not be determined from * this abstract class, the implementation of this method * is left to subclasses. * * @param index the index of the specified child within a * zero-based list of the component's children. */ public void addAccessibleSelection(int index) { /* Subclasses with children should implement this */ } /** * Registers the specified focus listener to receive * focus events from this component. * * @param listener the new focus listener. */ public void addFocusListener(FocusListener listener) { /* * Chain the new focus listener to the existing chain * of focus listeners. Each new focus listener is * coupled via multicasting to the existing chain. */ focusListener = AWTEventMulticaster.add(focusListener, listener); } /** * Clears the component's current selection. Following * the calling of this method, no children of the component * will be selected. * <br /> * <br /> * As the existence of children can not be determined from * this abstract class, the implementation of this method * is left to subclasses. */ public void clearAccessibleSelection() { } /** * Returns true if the specified point lies within the * component. The supplied co-ordinates are assumed to * be relative to the co-ordinate system of the component * itself. Thus, the point (0,0) is the upper left corner * of this component. * <br /> * <br /> * Please note that this method depends on a correctly implemented * version of the <code>getBounds()</code> method. Subclasses * must provide the bounding rectangle via <code>getBounds()</code> * in order for this method to work. * * @param point the point to check against this component. * @return true if the point is within this component. * @see #getBounds() */ public boolean contains(Point point) { /* We can simply return the result of a test for containment in the bounding rectangle */ return getBounds().contains(point); } /** * Returns the <code>Accessible</code> child of this component present * at the specified point. The supplied co-ordinates are * assumed to be relative to the co-ordinate system of this * component (the parent of any returned accessible). Thus, * the point (0,0) is the upper left corner of this menu * component. * <br /> * <br /> * As the existence of children can not be determined from * this abstract class, the implementation of this method * is left to subclasses. * * @param point the point at which the returned accessible * is located. * @return null. */ public Accessible getAccessibleAt(Point point) { return null; } /** * Returns the <code>Accessible</code> child at the supplied * index within the list of children of this component. * <br /> * <br /> * As the existence of children can not be determined from * this abstract class, the implementation of this method * is left to subclasses. * * @param index the index of the <code>Accessible</code> child * to retrieve. * @return null. */ public Accessible getAccessibleChild(int index) { return null; } /** * Returns the number of children of this component which * implement the <code>Accessible</code> interface. If * all children of this component are accessible, then * the returned value will be the same as the number of * children. * <br /> * <br /> * * @return 0. */ public int getAccessibleChildrenCount() { return 0; } /** * Retrieves the <code>AccessibleComponent</code> associated * with this accessible context and its component. As the * context itself implements <code>AccessibleComponent</code>, * this is the return value. * * @return the context itself. */ public AccessibleComponent getAccessibleComponent() { return this; } /** * Returns the accessible name for this menu component. This * is the name given to the component, which may be null if * not set using <code>setName()</code>. * <br /> * <br /> * The name is not the most appropriate description of this * object. Subclasses should preferably provide a more * accurate description. For example, a File menu could * have the description `Lists commands related to the * file system'. * * @return a description of the component. Currently, * this is just the contents of the name property. * @see MenuComponent#setName(String) */ public String getAccessibleDescription() { return MenuComponent.this.getName(); } /** * Retrieves the index of this component within its parent. * If no parent exists, -1 is returned. * * @return -1 as the parent, a <code>MenuContainer</code> * is not <code>Accessible</code>. */ public int getAccessibleIndexInParent() { return -1; } /** * Returns the accessible name of this component. This * is the name given to the component, which may be null if * not set using <code>setName()</code>. * <br /> * <br /> * The name property is not the most suitable string to return * for this method. The string should be localized, and * relevant to the operation of the component. For example, * it could be the text of a menu item. However, this can * not be used at this level of abstraction, so it is the * responsibility of subclasses to provide a more appropriate * name. * * @return a localized name for this component. Currently, this * is just the contents of the name property. * @see MenuComponent#setName(String) */ public String getAccessibleName() { return MenuComponent.this.getName(); } /** * Returns the <code>Accessible</code> parent of this component. * As the parent of a <code>MenuComponent</code> is a * <code>MenuContainer</code>, which doesn't implement * <code>Accessible</code>, this method returns null. * * @return null. */ public Accessible getAccessibleParent() { return null; } /** * Returns the accessible role of this component. * <br /> * <br /> * The abstract implementation of this method returns * <code>AccessibleRole.AWT_COMPONENT</code>, * as the abstract component has no specific role. This * method should be overridden by concrete subclasses, so * as to return an appropriate role for the component. * * @return <code>AccessibleRole.AWT_COMPONENT</code>. */ public AccessibleRole getAccessibleRole() { return AccessibleRole.AWT_COMPONENT; } /** * Retrieves the <code>AccessibleSelection</code> associated * with this accessible context and its component. As the * context itself implements <code>AccessibleSelection</code>, * this is the return value. * * @return the context itself. */ public AccessibleSelection getAccessibleSelection() { return this; } /** * Retrieves the <code>Accessible</code> selected child * at the specified index. If there are no selected children * or the index is outside the range of selected children, * null is returned. Please note that the index refers * to the index of the child in the list of <strong>selected * children</strong>, and not the index of the child in * the list of all <code>Accessible</code> children. * <br /> * <br /> * As the existence of children can not be determined from * this abstract class, the implementation of this method * is left to subclasses. * * @param index the index of the selected <code>Accessible</code> * child. */ public Accessible getAccessibleSelection(int index) { return null; } /** * Returns a count of the number of <code>Accessible</code> * children of this component which are currently selected. * If there are no children currently selected, 0 is returned. * <br /> * <br /> * As the existence of children can not be determined from * this abstract class, the implementation of this method * is left to subclasses. * * @return 0. */ public int getAccessibleSelectionCount() { return 0; } /** * Retrieves the current state of this component * in an accessible form. For example, a given component * may be visible, selected, disabled, etc. * <br /> * <br /> * As this class tells us virtually nothing about the component, * except for its name and font, no state information can be * provided. This implementation thus returns an empty * state set, and it is left to concrete subclasses to provide * a more acceptable and relevant state set. Changes to these * properties also need to be handled using * <code>PropertyChangeListener</code>s. * * @return an empty <code>AccessibleStateSet</code>. */ public AccessibleStateSet getAccessibleStateSet() { return new AccessibleStateSet(); } /** * Returns the background color of the component, or null * if this property is unsupported. * <br /> * <br /> * This abstract class knows nothing about how the component * is drawn on screen, so this method simply returns the * default system background color used for rendering menus. * Concrete subclasses which handle the drawing of an onscreen * menu component should override this method and provide * the appropriate information. * * @return the default system background color for menus. * @see #setBackground(java.awt.Color) */ public Color getBackground() { return SystemColor.menu; } /** * Returns a <code>Rectangle</code> which represents the * bounds of this component. The returned rectangle has the * height and width of the component's bounds, and is positioned * at a location relative to this component's parent, the * <code>MenuContainer</code>. null is returned if bounds * are not supported by the component. * <br /> * <br /> * This abstract class knows nothing about how the component * is drawn on screen, so this method simply returns null. * Concrete subclasses which handle the drawing of an onscreen * menu component should override this method and provide * the appropriate information. * * @return null. * @see #setBounds(java.awt.Rectangle) */ public Rectangle getBounds() { return null; } /** * Returns the <code>Cursor</code> displayed when the pointer * is positioned over this component. Alternatively, null * is returned if the component doesn't support the cursor * property. * <br /> * <br /> * This abstract class knows nothing about how the component * is drawn on screen, so this method simply returns the default * system cursor. Concrete subclasses which handle the drawing * of an onscreen menu component may override this method and provide * the appropriate information. * * @return the default system cursor. * @see #setCursor(java.awt.Cursor) */ public Cursor getCursor() { return Cursor.getDefaultCursor(); } /** * Returns the <code>Font</code> used for text created by this component. * * @return the current font. * @see #setFont(java.awt.Font) */ public Font getFont() { return MenuComponent.this.getFont(); } /** * Retrieves information on the rendering and metrics of the supplied * font. If font metrics are not supported by this component, null * is returned. * <br /> * <br /> * The abstract implementation of this method simply uses the toolkit * to obtain the <code>FontMetrics</code>. Concrete subclasses may * find it more efficient to invoke their peer class directly, if one * is available. * * @param font the font about which to retrieve rendering and metric * information. * @return the metrics of the given font, as provided by the system * toolkit. * @throws NullPointerException if the supplied font was null.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -