• ベストアンサー

エンターキーを押すとOKボタンの処理をしてくれる

自分の作ったJFrameのアプリケーションで、処理をお願いするのに、いちいちOKボタンをクリックしていたんでは、大変面倒で困ってます。 普通のウインドウズのアプリケーションみたいに、OKボタンを一々クリックしなくても、エンターキーを押せば処理してくれるようにしたいのですが、Javaではできないのですか? たしか、VBではできましたよね。 あと、欲をいうと、エスケープキーを押すと終了するようにもしたいです。 誰か知っている人がいたら、教えてください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • takaP-
  • ベストアンサー率79% (83/105)
回答No.1

ベストな解答では無いかもしれませんけど。。。 ボタン「OK」に KeyListener を組み込めば可能かと。 それで、「OK」ボタンの actionPerformed() と同様の処理をkeyTyped() なり、keyReleased(),keyPressed() なりをオーバライドして書き込むか、actionPerformed() を呼び出せば良いかと。 Button button = new Button("OK"); button.addActionListener(this); button.addKeyListener(this); ******************************* 方法1 public void actionPerformed(ActionEvent e) { //何らかの処理 } public void keyReleased(KeyEvent e) { if(KeyEvent.VK_ENTER == e.getKeyCode()) { //actionPerformed() と同様の処理 } } ************************************ 方法2 public void actionPerformed(ActionEvent e) { // 何らかの処理 } public void keyReleased(KeyEvent e) { if(KeyEvent.VK_ENTER == e.getKeyCode()) { ActionEvent ae = new ActionEvent(e.getComponent(),ActionEvent.ACTION_PERFORMED, "" ) ; actionPerformed(ae) ; } } ************************************* 方法3 public void actionPerformed(ActionEvent e) { hoo(); } public void keyReleased(KeyEvent e) { if(KeyEvent.VK_ENTER == e.getKeyCode()) { hoo(); } } public void hoo() { //何らかの処理 } ********************************* エスケープキーで終了したいのでしたら。。。 public class Foo extends JFrame implements KeyListener { public Foo() { addKeyListener(this); } public void keyReleased(KeyEvent e) { if(KeyEvent.VK_ESCAPE == e.getKeyCode()) { System.exit(0); } } で、良いかと。。。

kamkamkam3
質問者

お礼

どうも、ご回答ありがとうございます。 VBだと、確かデフォルトキーとか、キャンセルキーとか言って登録できたんですけど。 やはり、KeyListenerしか手はないですかね。私もやろうと思ったんですが、getKeyCode()で、エンターキーのキーコードは何番だ?と思っていて、先に進まなかったのです。VK_ENTERはこういうときに使うんですね。目には付いたのですが、使い方が分からなくて、結局出来ませんでした。 しかし、これで問題が解決できそうです。一々クリックするのが嫌いなものですから。どうもありがとうございました。

関連するQ&A