java  怎么对一个button设置快捷键

解决方案 »

  1.   

    用KeyStroke可以实现
        
      ActionListener   action=new   ActionListener(){   
          public   void   actionPerformed(ActionEvent   e){   
              System.out.println("^G   has   pressed.");   
          }   
      };   
      KeyStroke   ks=KeyStroke.getKeyStroke(KeyEvent.VK_G,InputEvent.CTRL_MASK,false);//Ctrl+G     
      InputMap   map     =   jButton4.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);   
      map.put(ks,"key");//这个"key"可以是任意字符串,但是不能重复,就好像是Hashtable中的ke -value一样,  而下面actionmap中put进去的action就是它的value;     jButton4.getActionMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)   
      .put("key",action);
      

  2.   

    jframe 窗口失去焦点后,主没有任何作用了...
    请问怎么可以解决
      

  3.   

    就像qq一样.....最小化qq后...按住ctrl+alt+z就可弹出来...在java里...就不行了请问怎么实现
      

  4.   


        /**
         * 为RootPaneContainer组件添加键盘事件
         * @param rpc RootPaneContainer组件
         * @param action 需要执行的动作
         * @param keyName 键的名称
         * @param keyCode 键的数字代码
         * @param modifiers 任意修饰符的按位或组合
         */
        public static void registerKeyEvent(RootPaneContainer rpc, Action action, String keyName, int keyCode, int modifiers)
        {
            JRootPane rp = rpc.getRootPane();
            InputMap inputMap = rp.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
            inputMap.put(KeyStroke.getKeyStroke(keyCode, modifiers), keyName);
            rp.getActionMap().put(keyName, action);
        }        Action action = new AbstractAction()
            {
                public void actionPerformed(ActionEvent e)
                {
                    System.out.println("Do something...");
                }
            };        registerKeyEvent(jframe, action, "随便什么都行,只要不重复", KeyEvent.VK_S, KeyEvent.CTRL_MASK);