2017-06-12 10 views
0

私は検索ボックスにクエリを入力してボタンをクリックして検索するプログラムを作った。しかし、彼はenterを押して検索を開始することもできます。 ボタンのコードは今の検索が正常にEnterキーを押すが、ボタンdosen't作業をクリックで開始されJButtonをクリックしても検索が開始されない

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

です。私はボタンをクリックすると、実際にそれを呼び出して、私はボタンをクリックするたびに、それが印刷されますが、私はどんな結果が飛び出る表示されていないかどうかを確認するためにsearch_handler()メソッド内

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

を配置しています。 2つの異なる場所から呼び出されたときに、同じメソッドが異なる動作をする理由を理解できません。 ご協力いただければ幸いです。

+0

を;'メソッドが壊れている:)あなた自身の(あるいは、少なくともでそのバグを見つける必要があり、より具体的な頼みます質問)。 – matoni

+1

Stack Overflowへようこそ、私はあなたが持っていないことを見て、[ヘルプ]を見て、[ask]を学び、あなたの問題を示す有効な[mcve]を投稿し、ハードコードされたデータ、必要な場合にはプログラム内にイメージ/フォーマットはありません。これにより、混乱が少なくなり、より良い回答が得られます。 – Frakcool

答えて

2

このコードでは、カスタムリスナーをボタンに追加することを示しているため、テキストフィールド用のカスタムコードもいくつか追加する必要があります。このコードが異なる場合は、結果が異なる可能性があります。

代わりに、同じActionListenerをボタンとテキストフィールドに追加する必要があります。この方法で、フォーカスがテキストフィールドにあるときにEnterキーを使用するか、マウスを使用してボタンをクリックすると、同じコードが実行されます。

だからあなたのコードは次のようになります: `search_handlerは()ことを、意味

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

button.addActionListener(al); 
textField.addActionListener(al); 
関連する問題