Java 将按钮单击事件传递到按键时执行的操作

Java 将按钮单击事件传递到按键时执行的操作,java,awt,actionlistener,keylistener,keyevent,Java,Awt,Actionlistener,Keylistener,Keyevent,我正在处理一个Java任务,它必须使用AWT来完成。我想要一个按钮,当按钮处于焦点时按下回车键触发。我用doClick()方法在Swing中解决了这个问题,但在AWT中似乎不起作用。到目前为止,我正在尝试: button.addActionListener(this); // Passes value from a TextBox to actionPerformed() button.addKeyListener(new KeyAdapter() { public void key

我正在处理一个Java任务,它必须使用AWT来完成。我想要一个按钮,当按钮处于焦点时按下回车键触发。我用doClick()方法在Swing中解决了这个问题,但在AWT中似乎不起作用。到目前为止,我正在尝试:

button.addActionListener(this); // Passes value from a TextBox to actionPerformed() 

button.addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent e) {
         if(e.getKeyCode()==KeyEvent.VK_ENTER) {
              actionPerformed(null);
         }
    } 
});

public void actionPerformed (ActionEvent e) {
     try {  
          if (e.getSource() == button) {
               // Stuff I want to happen
          } else if (e.getSource() == anotherButton) {
               // Other Stuff
          } else {     //third button
               // More stuff
          }
     } catch (NumberFormatException nfe) { 
          // Null argument in keyPressed triggers this
          // catches empty string exception from TextBox
     }
 }
正如我在注释中提到的,null参数将触发catch。有人知道按钮按下的理由是什么,或者是一种更简单的方法吗?谢谢


编辑-澄清:actionPerformed()根据单击三个按钮中的哪一个,对文本框中的输入执行以下三项操作之一。try/catch用于捕获空字符串/格式异常。

您总是可以有一个名为
onButtonPress()
的方法,您的
操作执行
以及您的
按键
都可以调用该方法

  button.addActionListener(this);

    button.addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent e) {
         if(e.getKeyCode() == KeyEvent.VK_ENTER) {
              onButtonPress();
         }
    } 
 });

public void actionPerformed (ActionEvent e) {
    if (e.getSource() == button){
       onButtonPress();
    } 
 }

private void onButtonPress(){
    // do something
}

您总是可以调用一个名为
onButtonPress()
的方法,您的
操作执行
可以调用该方法,也可以调用您的
按键

  button.addActionListener(this);

    button.addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent e) {
         if(e.getKeyCode() == KeyEvent.VK_ENTER) {
              onButtonPress();
         }
    } 
 });

public void actionPerformed (ActionEvent e) {
    if (e.getSource() == button){
       onButtonPress();
    } 
 }

private void onButtonPress(){
    // do something
}

。。。这必须使用AWT完成。
ack!我为你感到难过(通常,依靠异常处理来触发事件/将它们当作条件来使用是不好的做法。可能只有我一个人,但我的
操作中只有
if
else if
(或类似操作)方法。如果您的
actionPerformed
是从未设置条件的组件调用的,则忽略它。换句话说,如果源是
button
,则调用
onButtonPress()
,如果不是,则忽略它。如果您有另一个名为
button2
的按钮,则添加
}否则(source==button2){
到您的
操作执行
。我永远不会在
操作执行
中有
捕获
其他
…这必须使用AWT来完成。
确认!我为您感到抱歉。:(通常,依靠异常处理来触发事件/将它们当作条件来使用是不好的做法。可能只有我一个人,但我的
操作中只有
if
else if
(或类似操作)方法。如果您的
actionPerformed
是从未设置条件的组件调用的,则忽略它。换句话说,如果源是
button
,则调用
onButtonPress()
,如果不是,则忽略它。如果您有另一个名为
button2
的按钮,则添加
}否则(source==button2){
到您的
actionPerformed
。在
actionPerformed
中,我永远不会有一个
catch
或一个
else
。我没有考虑过这一点,但我最终不得不打破actionPerformed()中的所有条件我试图避免的方法。所以您确实希望在您的
actionPerformed
中包含条件/
if else
?我没有考虑过这一点,但我最终不得不分解actionPerformed()中的所有条件我试图避免的方法。那么您是否希望在您的
操作执行中包含条件/
if else