没有编译过。你自己试试看吧。
import java.awt.*;
import java.awt.event.*;public class Test extends Frame implements KeyListener{  public static void main(String[] args){
Test test = new Test();
test.init();
  }  private void init(){
this.setLayout(new BorderLayout());
    Button btn = new Button("fffff");
btn.addKeyListener(this);
this.add(btn,BorderLayout.SOUTH);
this.setBounds(0,0,200,200);
this.setVisible(true);
  }  public void keyPressed(KeyEvent e) {
    System.out.println(e.getKeyCode());
    switch (e.getKeyCode()){
case : 10  //enter
// do something here.
break;
case : 27  //esc
System.exit(0);
break;
default :
    }
  }  public void keyReleased(KeyEvent e) {
  }  public void keyTyped(KeyEvent e) {
  }
}

解决方案 »

  1.   

    Button test = new Button();
    test.addKeyListener(new KeyAdapter(){
      public void keyPressed(KeyEvent e) {
        int i = e.getKeyCode();
        if(i == KeyEvent.VK_ENTER){}
        else if(i == KeyEvent.VK_ESCAPE){}
      }
    });
      

  2.   

    Button test = new Button();
    test.addKeyListener(new KeyAdapter(){
      public void keyPressed(KeyEvent e) {
        int i = e.getKeyCode();
        if(i == KeyEvent.VK_ENTER){}
        else if(i == KeyEvent.VK_ESCAPE){}
      }
    });
      

  3.   

    上面两个都不行!
    我想问一下:那原本的按钮事件响应呢?
    如果实现?
      void jButton1_actionPerformed(ActionEvent e) {
        this.dispose();
      }
    上面的是事件都是KeyEvent e,我无法让它们调用成功  
    void jButton1_actionPerformed(ActionEvent e) {
        this.dispose();
      }
      

  4.   

    gularess(无吃哪拉) 的会好用的.
    你试一下,打印个语句看看.
    在打印语句的地方加入你的代码就回ok.
    Button test = new Button();
    test.addKeyListener(new KeyAdapter(){
      public void keyPressed(KeyEvent e) {
        int i = e.getKeyCode();
        if(i == KeyEvent.VK_ENTER){System.out.println("1111111");}
        else if(i == KeyEvent.VK_ESCAPE){System.out.println("222222");}
      }
    });而且这与你的:
    void jButton1_actionPerformed(ActionEvent e) {
        this.dispose();
      }
    并不矛盾.
      

  5.   

    import java.awt.*;
    import java.awt.event.*;public class Test extends Frame implements KeyListener, ActionListener{  public static void main(String[] args){
    Test test = new Test();
    test.init();
      }  private void init(){
    this.setLayout(new BorderLayout());
        Button btn = new Button("fffff");
    btn.addKeyListener(this);
    btn.addActionListener(this); 
    this.add(btn,BorderLayout.SOUTH);
    this.setBounds(0,0,200,200);
    this.setVisible(true);
      }  private void dosomething(){
    //do something here.
      }  public void actionPerformed(ActionEvent e){
    dosomething();
      }
              
      public void keyPressed(KeyEvent e) {
        System.out.println(e.getKeyCode());
        switch (e.getKeyCode()){
    case : 10  //enter
    dosomething();
    break;
    case : 27  //esc
    System.exit(0);
    break;
    default :
        }
      }  public void keyReleased(KeyEvent e) {
      }  public void keyTyped(KeyEvent e) {
      }
    }
      

  6.   

    void this_keyPressed(KeyEvent e) {
    if (e.getKeyCode()==e.VK_ENTER) System.exit(0);
      }
      

  7.   

    问题是我需要按钮按下和快捷键响应同一个事件处理。
    上面给出的全部是KeyEvent e,我没有办法在键盘响应时调用
    public void actionPerformed(ActionEvent e){
    dosomething();
    }
    方法。因为两个Event参数不同,没办法调用
    上面全部是需要我写两个同样处理的方法,但在事实上这是不可能的,我调用这个dialog的时候还要重写这个方法,如果按上面的处理,我岂不是要重写两个?还要判断是否要重写哪一个,这不是要命么?
    所以上面的全部都不行。
    我需要的是键盘响应和按钮响应响应同一个事件
    public void actionPerformed(ActionEvent e){
    dosomething();
      }
    而不是各自响应
    最好给出整个程序的源码。
      

  8.   

    首先谢谢楼上的回复,但是
    楼上根本没有搞清楚我的需求。
    我实说键盘响应的时候也要调用
    public void actionPerformed(ActionEvent e){
    dosomething();
      }。
    我不知道你们怎么可能调用成功?一个是KeyEvent,一个是ActionEvent,参数都不同。所以楼上的都是要我对同一个处理写两个不同的方法。但这是不可行的,我在调用这个dialog的时候,需要覆盖这个方法,所以写两个同样处理的不同名的方法是不行的,因为那还要我判断需要覆盖哪个
    能够真正解决问题的,请附全部的代码
      

  9.   

    如果button没有获得焦点, 你就是把esc,enter按烂掉,程序也不会响应的
    自己没说清楚还怪别人
      

  10.   

    import java.awt.*;
    import java.awt.event.*;public class Test extends Dialog {

    Button btnOK = new Button("OK");
    Button btnCancel = new Button("Cancel");
    Button btnClean = new Button("Clean");
    Label lblResult = new Label();
    TextField txtTest = new TextField();
    public Test() {
    super(new Frame());
    this.setTitle("Test");
    this.setSize(400, 180);
    this.setLayout(null);
    this.add(txtTest);
    txtTest.setBounds(100,70,200,20);
    this.add(lblResult);
    lblResult.setBounds(100,40,200,20);
    this.add(btnOK);
    btnOK.setBounds(300,130,60,25);
    this.add(btnClean);
    btnClean.setBounds(200,130,60,25);
    this.add(btnCancel);
    btnCancel.setBounds(40,130,60,25);
    SymAction symAction = new SymAction();
    btnOK.addActionListener(symAction);
    btnCancel.addActionListener(symAction);
    btnClean.addActionListener(symAction);
    setKeyListener();
    }

    public static void main(String[] argv) {
    Test temp = new Test();
    temp.setVisible(true);
    }

    class SymAction implements ActionListener {
    public void actionPerformed(ActionEvent event) {
    Object obj = event.getSource();
    if (obj == btnOK) {
    btnOK_actionPerformed();
    } else if (obj == btnCancel) {
    btnCancel_actionPerformed();
    } else if (obj == btnClean) {
    btnClean_actionPerformed();
    }
    }
    }

    private void btnOK_actionPerformed() {
    lblResult.setText("You have press OK!");
    }

    private void btnCancel_actionPerformed() {
    System.exit(0);
    }

    private void btnClean_actionPerformed() {
    lblResult.setText("");
    txtTest.setText("");
    }

    class SymKey extends KeyAdapter {
    public void keyPressed(KeyEvent ke) {
    if (ke.getKeyCode() == KeyEvent.VK_ENTER) {
    btnOK_actionPerformed();
    } else if (ke.getKeyCode() == KeyEvent.VK_ESCAPE) {
    btnCancel_actionPerformed();
    } else {
    super.keyReleased(ke);
    }
    }
    }

    private void setKeyListener() {
    SymKey symKey = new SymKey();
    Component[] components = this.getComponents();
    for (int i = 0; i < components.length; i++) {
    components[i].addKeyListener(symKey);
    }
    }
    }