当前位置: 首页 > 知识库问答 >
问题:

如何在Java中添加按钮侦听器?

吕森
2023-03-14

我想在Java中添加一个按钮侦听器,这样当用户只需按下enter按钮时,按钮就会被按下。

我尝试将此操作监听器添加到我创建的按钮:

String guessText = txtGuess.getText();
JTextField txtGuess = new JTextField();
txtGuess.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
          checkGuess();
      }
  });

这就是整个功能:

public void checkGuess() {
    String guessText = txtGuess.getText();
    JTextField txtGuess = new JTextField();
    txtGuess.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
              checkGuess();
          }
      });
    String message = "";
    int guess = Integer.parseInt(guessText);
    if (guess < theNumber)
        message = guess + " is too low. Try again.";
    else if (guess > theNumber)
        message = guess + " is too high. Try again.";
    else {  
        message = guess + " is correct. Let's play again!";
        newGame();
    }
    lblOutput.setText(message);
}

然而,当我的gui出现时,我在输入输入后按“回车”键,什么也没有发生。我必须亲自点击Guess按钮,这正是我试图避免的!

这是我创建的窗口:

我希望用户输入一个数字,然后按enter键,然后单击Guess按钮。帮助我做错了什么?

共有1个答案

安高翰
2023-03-14

因此,我假设您希望保留权力,在按下回车键时应用相同的代码,就像按下按钮一样。

为此,我将向按钮添加ActionListener,并向文本字段添加ActionListener。然后让这两个ActionListener触发一个返回输入,并根据随机生成的数字进行检查。

当按下enter键时,JTextField的ActionListener方法会自然触发。

目前,您有一个返回和检查输入文本并创建新文本字段的方法。您似乎是以递归的方式执行此操作的,而不是以这种方式,您可以使用类似于以下内容的方法:

private JTextField txtGuess;

private void initialiseTextField(){//Initialises a textField to be used for all inputs.
    txtGuess = new JTextField();
    txtGuess.addActionListener(){
        public void actionPerformed(ActionEvent e) {
          checkGuess();
        }
    }
}

public void checkGuess() {
    String guessText = txtGuess.getText();
    txtGuess.setText("");//Empties the contents of the text field.
    String message = "";
    int guess = Integer.parseInt(guessText);
    if (guess < theNumber)
        message = guess + " is too low. Try again.";
    else if (guess > theNumber)
        message = guess + " is too high. Try again.";
    else {  
        message = guess + " is correct. Let's play again!";
        newGame();
    }
    lblOutput.setText(message);
}

为了使其工作,您需要将txtGuess声明为类的一个属性。您可以使用以下命令行执行此操作:

private JTextField txtGuess;

我已将其设置为“私人”,但如果是公共的,则应能正常工作。

初始化方法初始化整个类的文本字段条件,这意味着每次输入文本时不会生成新的JTextFields。

希望这能解决你的问题。问我你是否需要更多的帮助。

注意:我只提供了一个如何用回车键检查输入的例子,你仍然需要自己创建按钮。

 类似资料:
  • 我以这种方式在android活动的操作栏中添加了向上按钮: 活动: getSupportActionBar()。setDisplayHomeAsUpEnabled(真); 清单: android:parentActivityName=“.MenuActivity” 它工作正常,但现在我想在活动之间添加一个过渡效果。这种过渡效果很好: Intent意图=new Intent(getApplicati

  • 问题内容: 我只是试图在我的注释点添加一个细节按钮而被卡住,不幸的是,我不知道该怎么做。有人可以帮我吗? 下图显示了我想要实现的目标。谢谢! MapKitViewController: 问题答案: 您做对了,您只需要实现这些方法即可添加按钮以及标题和副标题 iOS 8和Xcode 6 查看我的输出。

  • 我用JavaFx制作了两个简单的JMS应用程序(一个是发送者,另一个是接收者)。 但是,我不能用来自发送方的新消息刷新接收方的GUI。 我使用onMessage事件在internet上查找,并重写了它(向那里的ObservableList添加一个项),但它不起作用。引发事件后,没有向ObservableList添加任何元素。 这是我的听筒: 我的发件人:

  • 问题内容: 我有一个基于Swing的应用程序,其中包含一个。现在,我想使用唯一的行ID来更新或删除每一行。因此,我想向每行添加一个更新和删除按钮,它们具有支持ActionListener的功能。但是,我不知道如何使用NetBeans执行此操作。 问题答案: 要在列中显示按钮,您需要创建: 一个自定义渲染器以显示JButton 定制编辑器以响应鼠标单击 阅读Swing教程中有关如何使用表的部分。关于

  • 是否可以在报告中添加一个按钮,任何操作都将被修复? 示例:按钮“查看”,将显示更详细的统计信息。 备注: 我不完全理解如何制作文本元素的按钮

  • 问题内容: 如何在Android中动态添加按钮? 问题答案: