- ベストアンサー
JOptionPaneの「いいえ」をEnterで選択したときの処理についてのお悩み
- JOptionPaneを使って出したダイアログの「いいえ」ボタンをエンターキーで押すと、「はい」と同じ処理がされる問題について、解決策を教えてください。
- 現在のコードでは、エンターキーでの「いいえ」ボタンの選択に対して、誤った処理が行われています。どのように修正すれば、正しい処理を行えるようになるのでしょうか?
- JOptionPaneのダイアログで、エンターキーで「いいえ」ボタンを押すと、「はい」と同じ処理が実行されてしまう問題が発生しています。この問題を回避するためには、どのような対策が必要でしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
エンターキーは選択中のボタンではなくデフォルトのボタン(YES_NO_OPTIONの場合YESボタン)を押したことになる仕様のようです。スペースキーとは意味が異なります。 デフォルトのボタンを変更することは可能ですが、エンターキーの動作をスペースキーと同じにする方法は見つけられませんでした。
その他の回答 (2)
- mamadorusu
- ベストアンサー率83% (15/18)
以下の様に検証して見た所、問題なく判定できているようですが、何か勝手が違いますか? 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; } } });
お礼
ご回答ありがとうございます。 私のほうは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; } } });
- himajin100000
- ベストアンサー率54% (1660/3060)
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6240389 #何か他に影響しそうで怖いなぁ
お礼
ご回答ありがとうございました。 どうやらこれは、英語のサイトのようですね。 これからは英語の勉強もしなくてはいけませんね。 がんばります。
お礼
ご回答ありがとうございました。 やはりそうでしたか…。 ユーザーにエンターキーで押さないよう、注意を促したいと思います。