• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JOptionPaneの「いいえ」をEnterで)

JOptionPaneの「いいえ」をEnterで選択したときの処理についてのお悩み

このQ&Aのポイント
  • JOptionPaneを使って出したダイアログの「いいえ」ボタンをエンターキーで押すと、「はい」と同じ処理がされる問題について、解決策を教えてください。
  • 現在のコードでは、エンターキーでの「いいえ」ボタンの選択に対して、誤った処理が行われています。どのように修正すれば、正しい処理を行えるようになるのでしょうか?
  • JOptionPaneのダイアログで、エンターキーで「いいえ」ボタンを押すと、「はい」と同じ処理が実行されてしまう問題が発生しています。この問題を回避するためには、どのような対策が必要でしょうか?

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

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

エンターキーは選択中のボタンではなくデフォルトのボタン(YES_NO_OPTIONの場合YESボタン)を押したことになる仕様のようです。スペースキーとは意味が異なります。 デフォルトのボタンを変更することは可能ですが、エンターキーの動作をスペースキーと同じにする方法は見つけられませんでした。

dekachin
質問者

お礼

ご回答ありがとうございました。 やはりそうでしたか…。 ユーザーにエンターキーで押さないよう、注意を促したいと思います。

その他の回答 (2)

回答No.3

以下の様に検証して見た所、問題なく判定できているようですが、何か勝手が違いますか? JDKは1.6.0_20です。 ※インデントが消えて見づらいですね。gooはpreタグぐらいは使えるようにするべきだと思う。。。 final JButton button = new JButton(new AbstractAction("test") { @Override public void actionPerformed(ActionEvent e) { int sentaku = JOptionPane.showConfirmDialog(null, "本当にこのイベントを削除しますか?", "削除確認" ,0); switch (sentaku ) { case JOptionPane.OK_OPTION: System.out.println("OK押下"); break; case JOptionPane.NO_OPTION: System.out.println("NO押下"); break; case JOptionPane.CANCEL_OPTION: System.out.println("CANCEL押下"); break; default: System.out.println("それ以外"); break; } } });

dekachin
質問者

お礼

ご回答ありがとうございます。 私のほうはeclipseでプログラムを作っているので、 以下のようにやってみたのですが… だめでした。 このプログラムの提出期限が過ぎてしまったので、 せっかくですが、ここで締め切ろうと思います。 本当にありがとうございました。 private JButton getJButton7() { if (jButton7 == null) { jButton7 = new JButton(); jButton7.setBounds(new Rectangle(452, 44, 198, 24)); jButton7.setMnemonic(KeyEvent.VK_X); jButton7.setText("このイベントを削除(X)"); jButton7.setFont(new Font("MS Pゴシック", Font.BOLD, 14)); jButton7.setVisible(false); jButton7.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) {//以下、いただいたご回答と一部同文 int sentaku = JOptionPane.showConfirmDialog (null, "本当にこのイベントを削除しますか?", "削除確認" ,0); switch (sentaku ) { case JOptionPane.OK_OPTION: System.out.println("OK押下"); break; case JOptionPane.NO_OPTION: System.out.println("NO押下"); break; case JOptionPane.CANCEL_OPTION: System.out.println("CANCEL押下"); break; default: System.out.println("それ以外"); break; } } });

回答No.2

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6240389 #何か他に影響しそうで怖いなぁ

dekachin
質問者

お礼

ご回答ありがとうございました。 どうやらこれは、英語のサイトのようですね。 これからは英語の勉強もしなくてはいけませんね。 がんばります。

関連するQ&A