如何在Java中设置按钮中的单键助记符?

如何在Java中设置按钮中的单键助记符?,java,swing,jbutton,key-bindings,Java,Swing,Jbutton,Key Bindings,我正在做一个项目,我想在按钮上设置助记符。但问题是助记符在配对键示例(Alt+F)等上起作用,但我希望它是在单键上。 看看键绑定 然后,您可以将任意键附加到JButton 下面是一个帮助示例代码,只需按键盘上的C键: import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.Action; public class ButtonExample { private JFram

我正在做一个项目,我想在按钮上设置助记符。但问题是助记符在配对键示例(Alt+F)等上起作用,但我希望它是在单键上。

  • 看看键绑定

  • 然后,您可以将任意键附加到JButton

下面是一个帮助示例代码,只需按键盘上的C键:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.Action;

public class ButtonExample
{
    private JFrame frame;
    private JButton button;

    private void displayGUI()
    {
        frame = new JFrame("Button Mnemonic Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel contentPane = new JPanel();      
        Action buttonAction = new ButtonAction("CLICK ME"
                                , "This is a Click Me JButton");
        button = new JButton(buttonAction);                                             
        button.getInputMap().put(KeyStroke.getKeyStroke('c'), "Click Me Button");
        button.getActionMap().put("Click Me Button", buttonAction);

        contentPane.add(button);
        frame.setContentPane(contentPane);
        frame.pack();
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }

    class ButtonAction extends AbstractAction
    {
        public ButtonAction(String text, String desc)
        {
            super(text);
            putValue(SHORT_DESCRIPTION, desc);
        }

        @Override
        public void actionPerformed(ActionEvent ae)
        {
            JOptionPane.showMessageDialog(frame, "BINGO, you SAW me.");
        }
    }

    public static void main(String... args)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                new ButtonExample().displayGUI();
            }
        });
    }
}

再次原谅我的编辑,无法阻止我自己,因为我现在不能回答,和你说的一样。因此添加了一个示例代码。请看一看,如果它足够好的指导,否则删除它,像往常一样自由:-)@nIcEcOw故障是钥匙做了其他事情,然后单击按钮,这很可能是无意的。相反,使用操作来配置按钮,并在ActionMap@kleopatra你想用JButton.doClick()吗?我知道你在@nIcEcOw的代码上获得否决票有点不公平-想给你们任何人一个激励吗?纠正它:-)顺便说一句,doClick在行动中是一种选择,只是不是最佳的,依我看,主要是因为您应该始终支持操作而不是ActionListener+属性来配置button@kleopatra当前位置:我刚刚意识到,正如垃圾神也曾告诉我的那样,这是我认为我错过的,关于使用Action:-),但由于现在我离开iPad上的电脑,我需要一些时间再次编辑代码。如果您能帮我这个急需的忙,我将不胜感激:-)