java - 单击 JButton 时未启动搜索

标签 java swing jbutton

我编写了一个程序,可以在搜索框中输入查询,然后单击按钮进行搜索。不过,他也可以通过按 Enter 键启动搜索。 按钮的代码是

  b.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
        search_handler();
        }
});

现在,按 Enter 键即可成功启动搜索,但单击按钮不起作用。我已经放置了

System.out.println("method called");

在 search_handler() 方法内部验证单击按钮是否实际调用它,每次单击按钮时它都会被打印,但我没有看到任何结果弹出。 我无法理解为什么从两个不同的地方调用相同的方法时会有不同的行为。 任何帮助将不胜感激。

最佳答案

您的代码显示您向按钮添加了自定义监听器,因此您还必须为文本字段添加一些其他自定义代码。如果此代码不同,您可能会得到不同的结果。

相反,应该将相同的 ActionListener 添加到按钮和文本字段。这样,如果用户在焦点位于文本字段时使用 Enter 或使用鼠标单击按钮,将执行相同的代码。

所以你的代码应该类似于:

ActionListener al = new ActionListener()
{
    public void actionPerformed(ActionEvent e)
    {
        // do something
    }
});

button.addActionListener( al );
textField.addActionListener( al );

关于java - 单击 JButton 时未启动搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44502663/

相关文章:

java - 默认选择 JButton

java - HttpUrlConnection.setChunkedStreamingMode 的效果

java - 如何在java中为键值对创建JSON数组并在JQuery自动完成中使用它来分离键值

java - 单击 MenuItem 时如何创建 jTextField

java - Swing 文本字段可见性问题

java - 鼠标悬停之前按钮不可见

java - 用按钮链接 2 个 jForms - java

java - 将 ArrayList<Map<String, String>> 转换为 jsonArray

java - 从列表中获取最短点条目

java - 需要从java调用c库