Java JButton Settings setMnemonic(AbstractButton actionComponent)

Here you can find the source of setMnemonic(AbstractButton actionComponent)

Description

Translate the character following MNEMONIC_CHARACTER in the label by a mnemonic

License

Open Source License

Parameter

Parameter Description
actionComponent The menu item

Declaration

public static void setMnemonic(AbstractButton actionComponent) 

Method Source Code

//package com.java2s;
/**/*from   w  w w. jav a 2  s.c om*/
 * OrbisGIS is a GIS application dedicated to scientific spatial simulation.
 * This cross-platform GIS is developed at French IRSTV institute and is able to
 * manipulate and create vector and raster spatial information.
 *
 * OrbisGIS is distributed under GPL 3 license. It is produced by the "Atelier SIG"
 * team of the IRSTV Institute <http://www.irstv.fr/> CNRS FR 2488.
 *
 * Copyright (C) 2007-2012 IRSTV (FR CNRS 2488)
 *
 * This file is part of OrbisGIS.
 *
 * OrbisGIS is free software: you can redistribute it and/or modify it under the
 * terms of the GNU General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later
 * version.
 *
 * OrbisGIS is distributed in the hope that it will be useful, but WITHOUT ANY
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
 * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along with
 * OrbisGIS. If not, see <http://www.gnu.org/licenses/>.
 *
 * For more information, please consult: <http://www.orbisgis.org/>
 * or contact directly:
 * info_at_ orbisgis.org
 */

import javax.swing.AbstractButton;
import javax.swing.Action;

public class Main {
    public static final Character MNEMONIC_CHARACTER = '&';
    public static final String MNEMONIC_STRING = MNEMONIC_CHARACTER.toString();

    /**
     * Translate the character following MNEMONIC_CHARACTER in the label by a mnemonic
     * @param action The action instance
     */
    public static void setMnemonic(Action action) {
        String actionLabel = (String) action.getValue(Action.NAME);
        if (actionLabel != null) {
            int charPosition = getMnemonicCharPos(actionLabel);
            if (charPosition >= 0) {
                action.putValue(Action.MNEMONIC_KEY,
                        new Integer(Character.toUpperCase(actionLabel.charAt(charPosition + 1))));
                // Update Name
                action.putValue(Action.NAME, clearMnemonic(charPosition, actionLabel));
            }
        }
    }

    /**
     * Translate the character following MNEMONIC_CHARACTER in the label by a mnemonic
     * @param actionComponent The menu item
     */
    public static void setMnemonic(AbstractButton actionComponent) {
        String componentLabel = actionComponent.getText();
        int charPosition = getMnemonicCharPos(componentLabel);
        if (charPosition >= 0) {
            actionComponent.setMnemonic(Character.toUpperCase(componentLabel.charAt(charPosition + 1)));
            actionComponent.setText(clearMnemonic(charPosition, componentLabel));
        }
    }

    /**
     * @param label
     * @return Position of the mnemonic character, -1 if not found
     */
    private static int getMnemonicCharPos(String label) {
        int charPosition = label.indexOf(MNEMONIC_CHARACTER);
        while (charPosition != -1 && label.length() > charPosition + 1) {
            if (label.charAt(charPosition + 1) != new Character(MNEMONIC_CHARACTER)) {
                return charPosition;
            } else {
                //found &&
                charPosition = label.indexOf(MNEMONIC_CHARACTER, charPosition + 2);
            }
        }
        return -1;
    }

    /**
     * remove mnemonic hint. ex: "A &Label" become "A Label"
     * @param mnemonicPosition
     * @param originalText
     * @return
     */
    private static String clearMnemonic(int mnemonicPosition, String originalText) {
        String removedSpecChar = originalText.substring(0, mnemonicPosition)
                + originalText.substring(mnemonicPosition + 1, originalText.length());
        removedSpecChar = removedSpecChar.replace(MNEMONIC_STRING + MNEMONIC_STRING, MNEMONIC_STRING);
        return removedSpecChar;
    }
}

Related

  1. setButtonStyle(AbstractButton btn)
  2. setButtonText(ButtonGroup buttonGroup, List texts)
  3. setHelpIDString(javax.swing.AbstractButton btn, String id)
  4. setHorizontalMargin(AbstractButton button, int hMargin)
  5. setImageIcon(AbstractButton abstractButton, URL url)
  6. setPreferredWidth(JComponent button, int minWidth)
  7. setRadioButtonSelected(Window window, String buttonText)
  8. setScaledIcon(final AbstractButton button, final ImageIcon icon, final int orientation, final double scale)
  9. setSelected(final AbstractButton abstractButton, final boolean isSelected)