我已经设置好了按钮的所有属性,包括监听。但是我想让它和F1键关联在一起,也就是我按F1键的时候执行的就是我点击按钮以后的操作。API里是用public void setMnemonic(int mnemonic),但是它是与ALT键组合使用的。但是我现在想按F1就可以执行,并不按ALT!希望高手们帮我解决一下!

解决方案 »

  1.   

    应该监听键盘事件就好了吧。
    比如你在button时间里面的actionPerform方面里面的方法是 execute()的话。
    键盘事件,当F1被按下时,你也调用 execute(),不知道行不行啊。
      

  2.   

    使用KeyStore,或者直接添加键盘监听
      

  3.   

    import java.awt.Color;
    import java.awt.event.ActionEvent;import javax.swing.AbstractAction;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.KeyStroke;public class MyTestFrame extends JFrame {    public static void main(String[] args) {
            new MyTestFrame("KeyStroke Test");
        }    public MyTestFrame(String s) {
            super(s);
            this.setLayout(null);
            JButton button = new JButton();
            button.setBounds(50, 50, 200, 200);
            this.setSize(500, 500);
            this.setLocation(300, 300);
            this.setBackground(Color.gray);
            this.add(button);        button.getActionMap().put("Hello", new BtAction());
            button.getInputMap(button.WHEN_IN_FOCUSED_WINDOW).put(
                    KeyStroke.getKeyStroke("F1"), "Hello");        this.setVisible(true);
        }    class BtAction extends AbstractAction {        public void actionPerformed(ActionEvent e) {
                System.out.println("不要乱按F1!");
                JOptionPane.showMessageDialog(getContentPane(), "不要乱按F1!");
            }
        }
    }真有钱,赶紧结贴给分