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

解决方案 »

  1.   

    你现在的问题就是想按下一个按键 就去执行一个指定的方法是吧使用KeyStore,或者直接添加键盘监听就OK了
      

  2.   

    button.getAtionMap().put("我的事件名", buttonAction); 
    button.getInputMap(InputMap.WHEN_IN_FOCUS_WINDOW).put(KeyStroke.getKeyStroke("F1"), "我的事件名");
      

  3.   

    WHEN_IN_FOCUS_WINDOW 没有这个字段啊!
    getAtionMap();这个方法我在API里也查不到啊!~
    可能是我太菜了吧,总在这里看到你回答的问题,希望高手指教!~谢谢!
      

  4.   

    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!");
    }
    }
    }谁都是从菜的时候走过来的,平时多积累一下就好了