我想让我界面上面的一个JButton,当我直接按回车的时候就
出现保存的效果。
  怎么去让JButton获取这样的一个Enter键事件呢? 谢谢!

解决方案 »

  1.   

    InputMap和ActionMap。第一个存放的是<KeyStroke,Object>键值对,第二个存放的是<Object,Action>键值对。
    原理就是:这个组件捕捉到KeyStroke事件会去InputMap中以KeyStroke为键去查找对应的Object值,
    然后拿找到的Object值作为键再去ActionMap中去找Action值。
      

  2.   

    public   EnterKeyListener   implements   KeyListener   {  
            public   void   keyTyped(KeyEvent   e){  
                if(e.getKeyChar()   ==   '\n')   //   如果键入回车  
                {//在这里放你actionPerformed(){}里同样的东西!!  
               
                }  
            }  
             
            public   void   keyPressed(KeyEvent   e){}  
            public   void   keyReleased(KeyEvent   e){}  
       
      } 
    e.getKeyCode()==KeyEvent.VK_ENTER;
    大概就是这样,至于回车保存你自己实现吧  
      

  3.   


    JButton saveButton=new JButton("保存");saveButton.addKeyListener(new mousedemo());
    private class keydemo extends KeyAdapter {
    public void keyPressed(KeyEvent arg0) {
    // TODO 自动生成方法存根
    int keytext=arg0.getKeyCode();
    if(keytext==KeyEvent.VK_ENTER){
    //保存代码自己写
    }
    }
    }
      

  4.   


    ///-----------------private void BtnEnterKeyTyped(java.awt.event.KeyEvent evt) {
    // TODO add your handling code here:
      if(evt.getKeyCode() == KeyEvent.VK_ENTER){
         
      }
    }///----------------private void BtnEnterKeyPressed(java.awt.event.KeyEvent evt) {
    // TODO add your handling code here:
    if(evt.getKeyCode() == KeyEvent.VK_ENTER){
         
      }}////  使用哪个获取呀?
      

  5.   

    没问题啊!怎么会没反应呢!private class keydemo extends KeyAdapter {
            public void keyPressed(KeyEvent arg0) {
                // TODO 自动生成方法存根
                int keytext=arg0.getKeyCode();
                if(keytext==KeyEvent.VK_ENTER){
                    System.out.println("click");//保存代码自己写
                }
            }
        }
    看看按回车之后再控制台能不能显示!
      

  6.   

    KeyPressed是键被按下,KeyReleased是键被弹起,这两个都是更底层一些的事件。   
    KeyTypede是指有字符被输入,比如按住shift,再按A键,如果当时Caps   Lock不亮,就产生一个输入大写A的事件。public static final int KEY_PRESSED
    The "key pressed" event. This event is generated when a key is pushed downpublic static final int KEY_RELEASED
    The "key released" event. This event is generated when a key is let up.public static final int KEY_TYPED
    The "key typed" event. This event is generated when a character is entered. In the simplest case, it is produced by a single key press. Often, however, characters are produced by series of key presses, and the mapping from key pressed events to key typed events may be many-to-one or many-to-many. 
      

  7.   


    private void BtnEnterKeyPressed(java.awt.event.KeyEvent evt) {
    // TODO add your handling code here:
    if(evt.getKeyCode() == KeyEvent.VK_ENTER){
         //这里的自己写保存方法就行,不知道你是怎么保存的就不给你谢了
      }}
      

  8.   

       /**
         * 确定(保存)按钮触发的活动
         * @param evt
         */ //这个是保存的事件,要用鼠标点击                            private void BtnEnterActionPerformed(java.awt.event.ActionEvent evt) {
        if (keyContext.getTexts().size() == 0) {
            JOptionPane.showMessageDialog(jDialog, "Button label is null,please rename it!", "Warning", JOptionPane.WARNING_MESSAGE);
            return;
        }
        if (this.addOrModify == 2) {  
            key.setContext(keyContext);
            key.setKeyLength(keyContext.getTexts().size() * 6 + 2);
        } else if (this.addOrModify == 1) {  //新增        Key k = new Key();
            k.setParent(page);
            k.setKeyNo((page.getPageNo() - 1) * 12 + 47 + this.location);
            k.setContext(keyContext);
            k.setKeyLength(keyContext.getTexts().size() * 6 + 2);
            putKeyIntoPage(page, k);
        }
        jDialog.setVisible(false);
        jDialog.removeAll();
        jDialog.getParent().remove(jDialog);
        System.out.println("======");
    }                                        //-----------------private void BtnEnterKeyPressed(java.awt.event.KeyEvent evt) {
    // TODO add your handling code here:
        if(evt.getKeyCode() == KeyEvent.VK_ENTER){
            System.out.println(" 按回车键!");
        }
    }// 我用DeBug模式调,按回车时没用调用这个事件? 哪里写的不对吗?