2017-06-12 42 views
0

我做了一个程序,其中一个在搜索框中输入查询,然后单击一个按钮进行搜索。但是他也可以通过按回车启动搜索。 该按钮的代码是搜索没有启动点击JButton

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

现在搜索上成功地击中进入,但点击该按钮这么想的工作开始。我已经把

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

的search_handler()方法中,以验证是否单击该按钮实际上是调用它,每次我点击它就会被打印的按钮,但我没有看到任何结果跑出。 我不明白为什么相同的方法从两个不同的地方调用时行为不同。 任何帮助将不胜感激。

+0

这意味着,'search_handler();'方法被打破:)你必须找到你自己的这个bug(或者至少,要求更具体题)。 – matoni

+1

欢迎来到堆栈溢出,请参考[游览],因为我看到你没有,请通过[帮助]并学习[问],发布一个有效的[mcve]来演示你的问题,硬编码数据,没有外部链接编码,如果不需要,程序内部不存在图像/格式等,因为这将导致更少的混淆以及更多更好的答案 – Frakcool

回答

2

您的代码显示您将自定义侦听器添加到该按钮,因此您还必须为该文本字段提供一些其他自定义代码。如果这个代码不同,你可以得到不同的结果。

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

所以,你的代码应该是这个样子:

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

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