Home » openjdk-7 » javax » swing » [javadoc | source]

    1   /*
    2    * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
    3    * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    4    *
    5    * This code is free software; you can redistribute it and/or modify it
    6    * under the terms of the GNU General Public License version 2 only, as
    7    * published by the Free Software Foundation.  Oracle designates this
    8    * particular file as subject to the "Classpath" exception as provided
    9    * by Oracle in the LICENSE file that accompanied this code.
   10    *
   11    * This code is distributed in the hope that it will be useful, but WITHOUT
   12    * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
   13    * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
   14    * version 2 for more details (a copy is included in the LICENSE file that
   15    * accompanied this code).
   16    *
   17    * You should have received a copy of the GNU General Public License version
   18    * 2 along with this work; if not, write to the Free Software Foundation,
   19    * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
   20    *
   21    * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
   22    * or visit www.oracle.com if you need additional information or have any
   23    * questions.
   24    */
   25   package javax.swing;
   26   
   27   import java.util.EventListener;
   28   
   29   import java.awt;
   30   import java.awt.event;
   31   import java.awt.image;
   32   
   33   import java.io.ObjectOutputStream;
   34   import java.io.ObjectInputStream;
   35   import java.io.IOException;
   36   
   37   import javax.swing.plaf;
   38   import javax.accessibility;
   39   
   40   
   41   /**
   42    * A menu item that can be selected or deselected. If selected, the menu
   43    * item typically appears with a checkmark next to it. If unselected or
   44    * deselected, the menu item appears without a checkmark. Like a regular
   45    * menu item, a check box menu item can have either text or a graphic
   46    * icon associated with it, or both.
   47    * <p>
   48    * Either <code>isSelected</code>/<code>setSelected</code> or
   49    * <code>getState</code>/<code>setState</code> can be used
   50    * to determine/specify the menu item's selection state. The
   51    * preferred methods are <code>isSelected</code> and
   52    * <code>setSelected</code>, which work for all menus and buttons.
   53    * The <code>getState</code> and <code>setState</code> methods exist for
   54    * compatibility with other component sets.
   55    * <p>
   56    * Menu items can be configured, and to some degree controlled, by
   57    * <code><a href="Action.html">Action</a></code>s.  Using an
   58    * <code>Action</code> with a menu item has many benefits beyond directly
   59    * configuring a menu item.  Refer to <a href="Action.html#buttonActions">
   60    * Swing Components Supporting <code>Action</code></a> for more
   61    * details, and you can find more information in <a
   62    * href="http://java.sun.com/docs/books/tutorial/uiswing/misc/action.html">How
   63    * to Use Actions</a>, a section in <em>The Java Tutorial</em>.
   64    * <p>
   65    * For further information and examples of using check box menu items,
   66    * see <a
   67    href="http://java.sun.com/docs/books/tutorial/uiswing/components/menu.html">How to Use Menus</a>,
   68    * a section in <em>The Java Tutorial.</em>
   69    * <p>
   70    * <strong>Warning:</strong> Swing is not thread safe. For more
   71    * information see <a
   72    * href="package-summary.html#threading">Swing's Threading
   73    * Policy</a>.
   74    * <p>
   75    * <strong>Warning:</strong>
   76    * Serialized objects of this class will not be compatible with
   77    * future Swing releases. The current serialization support is
   78    * appropriate for short term storage or RMI between applications running
   79    * the same version of Swing.  As of 1.4, support for long term storage
   80    * of all JavaBeans<sup><font size="-2">TM</font></sup>
   81    * has been added to the <code>java.beans</code> package.
   82    * Please see {@link java.beans.XMLEncoder}.
   83    *
   84    * @beaninfo
   85    *   attribute: isContainer false
   86    * description: A menu item which can be selected or deselected.
   87    *
   88    * @author Georges Saab
   89    * @author David Karlton
   90    */
   91   public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants,
   92           Accessible
   93   {
   94       /**
   95        * @see #getUIClassID
   96        * @see #readObject
   97        */
   98       private static final String uiClassID = "CheckBoxMenuItemUI";
   99   
  100       /**
  101        * Creates an initially unselected check box menu item with no set text or icon.
  102        */
  103       public JCheckBoxMenuItem() {
  104           this(null, null, false);
  105       }
  106   
  107       /**
  108        * Creates an initially unselected check box menu item with an icon.
  109        *
  110        * @param icon the icon of the CheckBoxMenuItem.
  111        */
  112       public JCheckBoxMenuItem(Icon icon) {
  113           this(null, icon, false);
  114       }
  115   
  116       /**
  117        * Creates an initially unselected check box menu item with text.
  118        *
  119        * @param text the text of the CheckBoxMenuItem
  120        */
  121       public JCheckBoxMenuItem(String text) {
  122           this(text, null, false);
  123       }
  124   
  125       /**
  126        * Creates a menu item whose properties are taken from the
  127        * Action supplied.
  128        *
  129        * @since 1.3
  130        */
  131       public JCheckBoxMenuItem(Action a) {
  132           this();
  133           setAction(a);
  134       }
  135   
  136       /**
  137        * Creates an initially unselected check box menu item with the specified text and icon.
  138        *
  139        * @param text the text of the CheckBoxMenuItem
  140        * @param icon the icon of the CheckBoxMenuItem
  141        */
  142       public JCheckBoxMenuItem(String text, Icon icon) {
  143           this(text, icon, false);
  144       }
  145   
  146       /**
  147        * Creates a check box menu item with the specified text and selection state.
  148        *
  149        * @param text the text of the check box menu item.
  150        * @param b the selected state of the check box menu item
  151        */
  152       public JCheckBoxMenuItem(String text, boolean b) {
  153           this(text, null, b);
  154       }
  155   
  156       /**
  157        * Creates a check box menu item with the specified text, icon, and selection state.
  158        *
  159        * @param text the text of the check box menu item
  160        * @param icon the icon of the check box menu item
  161        * @param b the selected state of the check box menu item
  162        */
  163       public JCheckBoxMenuItem(String text, Icon icon, boolean b) {
  164           super(text, icon);
  165           setModel(new JToggleButton.ToggleButtonModel());
  166           setSelected(b);
  167           setFocusable(false);
  168       }
  169   
  170       /**
  171        * Returns the name of the L&F class
  172        * that renders this component.
  173        *
  174        * @return "CheckBoxMenuItemUI"
  175        * @see JComponent#getUIClassID
  176        * @see UIDefaults#getUI
  177        */
  178       public String getUIClassID() {
  179           return uiClassID;
  180       }
  181   
  182        /**
  183         * Returns the selected-state of the item. This method
  184         * exists for AWT compatibility only.  New code should
  185         * use isSelected() instead.
  186         *
  187         * @return true  if the item is selected
  188         */
  189       public boolean getState() {
  190           return isSelected();
  191       }
  192   
  193       /**
  194        * Sets the selected-state of the item. This method
  195        * exists for AWT compatibility only.  New code should
  196        * use setSelected() instead.
  197        *
  198        * @param b  a boolean value indicating the item's
  199        *           selected-state, where true=selected
  200        * @beaninfo
  201        * description: The selection state of the check box menu item
  202        *      hidden: true
  203        */
  204       public synchronized void setState(boolean b) {
  205           setSelected(b);
  206       }
  207   
  208   
  209       /**
  210        * Returns an array (length 1) containing the check box menu item
  211        * label or null if the check box is not selected.
  212        *
  213        * @return an array containing one Object -- the text of the menu item
  214        *         -- if the item is selected; otherwise null
  215        */
  216       public Object[] getSelectedObjects() {
  217           if (isSelected() == false)
  218               return null;
  219           Object[] selectedObjects = new Object[1];
  220           selectedObjects[0] = getText();
  221           return selectedObjects;
  222       }
  223   
  224       /**
  225        * See readObject() and writeObject() in JComponent for more
  226        * information about serialization in Swing.
  227        */
  228       private void writeObject(ObjectOutputStream s) throws IOException {
  229           s.defaultWriteObject();
  230           if (getUIClassID().equals(uiClassID)) {
  231               byte count = JComponent.getWriteObjCounter(this);
  232               JComponent.setWriteObjCounter(this, --count);
  233               if (count == 0 && ui != null) {
  234                   ui.installUI(this);
  235               }
  236           }
  237       }
  238   
  239   
  240       /**
  241        * Returns a string representation of this JCheckBoxMenuItem. This method
  242        * is intended to be used only for debugging purposes, and the
  243        * content and format of the returned string may vary between
  244        * implementations. The returned string may be empty but may not
  245        * be <code>null</code>.
  246        *
  247        * @return  a string representation of this JCheckBoxMenuItem.
  248        */
  249       protected String paramString() {
  250           return super.paramString();
  251       }
  252   
  253       /**
  254        * Overriden to return true, JCheckBoxMenuItem supports
  255        * the selected state.
  256        */
  257       boolean shouldUpdateSelectedStateFromAction() {
  258           return true;
  259       }
  260   
  261   /////////////////
  262   // Accessibility support
  263   ////////////////
  264   
  265       /**
  266        * Gets the AccessibleContext associated with this JCheckBoxMenuItem.
  267        * For JCheckBoxMenuItems, the AccessibleContext takes the form of an
  268        * AccessibleJCheckBoxMenuItem.
  269        * A new AccessibleJCheckBoxMenuItem instance is created if necessary.
  270        *
  271        * @return an AccessibleJCheckBoxMenuItem that serves as the
  272        *         AccessibleContext of this AccessibleJCheckBoxMenuItem
  273        */
  274       public AccessibleContext getAccessibleContext() {
  275           if (accessibleContext == null) {
  276               accessibleContext = new AccessibleJCheckBoxMenuItem();
  277           }
  278           return accessibleContext;
  279       }
  280   
  281       /**
  282        * This class implements accessibility support for the
  283        * <code>JCheckBoxMenuItem</code> class.  It provides an implementation
  284        * of the Java Accessibility API appropriate to checkbox menu item
  285        * user-interface elements.
  286        * <p>
  287        * <strong>Warning:</strong>
  288        * Serialized objects of this class will not be compatible with
  289        * future Swing releases. The current serialization support is
  290        * appropriate for short term storage or RMI between applications running
  291        * the same version of Swing.  As of 1.4, support for long term storage
  292        * of all JavaBeans<sup><font size="-2">TM</font></sup>
  293        * has been added to the <code>java.beans</code> package.
  294        * Please see {@link java.beans.XMLEncoder}.
  295        */
  296       protected class AccessibleJCheckBoxMenuItem extends AccessibleJMenuItem {
  297           /**
  298            * Get the role of this object.
  299            *
  300            * @return an instance of AccessibleRole describing the role of the
  301            * object
  302            */
  303           public AccessibleRole getAccessibleRole() {
  304               return AccessibleRole.CHECK_BOX;
  305           }
  306       } // inner class AccessibleJCheckBoxMenuItem
  307   }

Home » openjdk-7 » javax » swing » [javadoc | source]