• ベストアンサー

エンターキーを押すと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

  • OK CANCEL後の処理を戻す方法

    終了ボタンをクリックして別の関数で1:0kか2:cancel がもどってきます。 Private Sub cmdEnd_Click() return_meに1 2が入っています。 If return_me = 1 Then End End If End sub 1:okだとendで終了ですが、cancelだと、もと処理を抜けたいのですが、方法がわかりません・・。このソースだとプログラムが固まります。初歩的だと思いますが、お願いします。

  • K7 Layered Hidden Window の表示について

    XPを終了させる際に、K7EmlPxy.exe アプリケーションエラーと表示され、OKをクリックしないと終了できなくなりました。いちいち面倒なのでこの表示を出なくする方法を教えてください。

  • メッセージボックスのOKボタンをVBAでクリックさせたい

    EXCELの1つのブックに2つのマクロを組んでいます。 普段は1つ目のマクロを実行したあと、処理結果を確認してから 2つ目のマクロを動かしています。 ※1つ目のマクロ終了時に、完了のメッセージボックスが出ます。 この2つのマクロを、自動で処理するためのマクロを 作ろうとしていて、 1.1つ目のマクロを実行 2.処理完了のメッセージボックスのOKをクリック 3.2つ目のマクロを実行 という流れで処理しようと思っています。 今、メッセージボックスのOKボタンをVBAでクリックする方法がわからなくて 調べているのですが、お分かりになる方いらっしゃいましたら 教えていただけませんでしょうか。 例えば、1つフラグを作って、そのフラグが立っている時は メッセージボックスを出さないような制御は出来るのですが、 今回は、メッセージボックスをクリックする方法が 知りたいと思っています。 よろしくお願いいたします。

  • ネット接続時の「OK」ボタン

    インターネットに接続しようとしてインターネットエクスプローラのアイコンをクリックすると、「OK」とだけ書かれたボタンが小窓で表示されるようになりました。今までは出てこなかったのですが… その「OK」ボタンをクリックすると、普段どおり接続されるのですが、そこからまた別のサイトを開くときに同様の小窓が出てきます。 非常に面倒くさいのですが、何かのウィルスに感染してしまったのでしょうか? PC初心者のため、不安になってます。 どなたか助けてください。 プロバイダに電話したところ、「メーカーに聞いてください」との回答でした。

  • 複数のボタンを配置し、それぞれにイベント処理をつける

    よろしくお願いします。 javaを使った文字入力プログラムを作っているのですが、どうしても分からず質問させて頂きたいと思います。 「あ」から「ほ」までの合計30個のひらがなの文字が書かれたボタンを、5つ×6行で設置し、クリックするとそのボタンの文字がテキストボックスに入力される・・・という設計にしたいです。 もちろん1つずつソースを書けばできるのですがそれではコードが冗長になってしまうので、できるだけ簡略化してループ処理などで実現できればと考えています。 設置するボタンはひらがなボタン30個に加え、テキストボックスをリセットするボタン、クリックするとダイアログメッセージを表示させるボタンの計32個です。 時分でもいろいろ調べてみたのですが分からずじまいです。 どうかよろしくお願いいたします!

    • ベストアンサー
    • Java
  • VB8での特定プロセスの終了処理を自動化するには?

    今VBを使って特定のプロセスを終了するソフトを作っているのですが、ボタンを押せばプロセスを終了できるようになったのですが、いちいち押さなくても出来るようにするにはどうすればいいですか? ボタン1 を押すと特定のプロセス終了 ボタン2 を押すとボタン1を自動で常時押す 見たいに作りたいです><

  • プロパティーシートでOKボタンを押しても終わらなくするには?

    VC++ Ver6.0  プロパティーシートを使用した場合に自動で表示されるOK、キャンセルのボタンで、OK処理を実行した時は継続して処理を行う事はできないのでしょうか? キャンセル処理だけ終わるようにしたいのです。 BOOL CTESTApp::InitInstance() { AfxEnableControlContainer(); //省略 CPSheet Dialog("テストタイトル"); m_pMainWnd = &Dialog; if (Dialog.DoModal() == IDOK) { // [OK]が押されたときの処理 //処理後は、次のイベント待ちにしたい・・・ } else if (Dialog.DoModal() == IDCANCEL) { // [キャンセル]が押されたときの処理 //何もせず終了する(現状のまま) } return FALSE; }

  • ワンタッチボタンから接続できなくなりました

    ワンタッチスタートボタンからネットやメールに接続出来なくなりました 判る人がいましたらヨロシクお願いします。 PCは、NECのLL550/Kです。OSはビスタです 下記のアプリケーションエラーが出ます。 (アプリケーションを正しく初期化できませんでした(0xc0000022)。  [OK]をクリックしてアプリケーションを終了してください。 OKを押すと MFK Another Execは動作を停止しました 問題が発生したため…と表示され接続されません どなたかよろしくお願いします。

  • コンボボックスみたいなボタン?

    みなさん、こんにちは 添付画像のような、コンボボックスのDropDownStyleをDropDownListにした時のような見た目のボタンは、VB.Netで使うことは可能でしょうか? (左側のテキスト部分をクリックすると通常のボタンのように処理が実行され、  右側の▼部分をクリックするとプルダウンして処理が選択できるボタンです。) すみませんが、どなたか教えてください。 よろしくお願いします。

  • こういう処理を行うには・・・

    凄いざっくりとした質問になってしまいますが助けて下さい。 ACCESS2000で作成した社員管理のデータベースがあります。そのデータベースに、それぞれの社員が社内LANに公開されたサイト(こういう説明が正しいのか分かりませんが)から、自分の氏名や社員NOなどを入力して送信ボタンを押すと、サーバーのそのデータが蓄積されて、それを社員管理のデータベースに取り込むというような処理をしたいと考えています。 サーバー関係のJavaで行いたいと思っているんですが、Javaについては超初心者でした。 このような処理を行う場合、Javaのどこら辺を勉強すれば良いんですか?アプレットとか、アプリケーションとか、サブレットとか色々とありますよね。 宜しくお願いします。

    • ベストアンサー
    • Java
このQ&Aのポイント
  • B'zデジカメムービーの作動中、画面が固まり、Windowsが自動更新してからは動かなくなってしまいました。同じところで止まってしまいます。作成済みのデータでは正常に動作するため、新規作成時の問題のようです。トラブルシューティングで「0x803C0103」というエラーコードが表示されます。ソースネクスト株式会社に問い合わせましたが、解決できませんでした。解決策があれば教えてください。
  • B'zデジカメムービーの作動中に画面が固まり、Windowsが自動更新してからは動作しなくなった問題が発生しています。特定の箇所で止まってしまい、新規作成時にのみ発生します。既存のデータでは正常に動作するため、新規作成時の問題だと思われます。トラブルシューティングで「0x803C0103」というエラーコードが表示されます。ソースネクスト株式会社に問い合わせましたが、解決策を得ることができませんでした。解決方法を教えてください。
  • B'zデジカメムービーを使用していると、作動中に画面が固まってしまい、Windowsの自動更新後は起動しなくなってしまいました。同じ箇所で止まってしまい、新規作成時のみ問題が発生します。既存のデータでは正常に動作するため、新規作成時に問題があると思われます。トラブルシューティングで「0x803C0103」というエラーコードが表示されます。ソースネクスト株式会社に問い合わせましたが、解決策を得ることができませんでした。どうすれば解決できるでしょうか?
回答を見る