How to set a Single key Mnemonic in button in Java?

前端 未结 1 1371
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-01-17 18:58

I am working on a project and I want to set Mnemonic on buttons. But the problem is Mnemonic works on pairing key example (Alt+F) etc. But I want it to

1条回答
  •  不思量自难忘°
    2021-01-17 19:18

    • have look at KeyBindings,

    • then you can to attach any Key to the JButton

    Here is one example code for your help, just Press C on the Keyboard :

    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();
                }
            });
        }
    }
    

    0 讨论(0)
提交回复
热议问题