• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Javaのswingについて質問です。)

Java swingでキーボード入力の簡単な電卓を作成する際の問題について

このQ&Aのポイント
  • Javaのswingでキーボード入力の簡単な電卓を作成している際に、+キーと=キーが同じになっているため、うまく反応しない問題が発生しました。
  • 解決策として、shiftキーと同時に+キーが押されたかどうかを判定するために、InputEventクラスのgetModifiersEx()メソッドを使用することができます。
  • 具体的には、int mod = e.getModifiersEx();とすることで、shiftキーを同時に押した場合に返される定数InputEvent.SHIFT_DOWN_MASKを条件分岐に使用することで、shiftキーと同時に+キーが押されたかどうかを読み取ることができます。

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

int mod = e.getModifiersEx() & InputEvent.SHIFT_DOWN_MASK; if(mod == InputEvent.SHIFT_DOWN_MASK) {  // SHIFTが押されてます } というのが、(CTRL、ALT(META)などは知らんけど)SHIFTが押されている状態ですよ、という場合になります。今回は、SHIFT+「+」、すなわち、SHIFTと「+」だけが押されていて、CTRL、ALTが押されていない状態だというのを判定したいので、単純に if(e.getModifiersEx() == InputEvent.SHIFT_DOWN_MASK) という判定を行うことになります。 仮に InputEvent.SHIFT_DOWN_MASK=1 InputEvent.ALT_DOWN_MASK=2 InputEvent.CTRL_DOWN_MASK=4 InputEvent.META_DOWN_MASK=8 だったとしましょう。そうすると、SHIFTだけが押されている時はe.getModifiersEx()は1を返します。SHIFTとCTRLが押されていて他の装飾キーが押されていないときは1+4で5が返ってきます。正確には足し算ではなくビットの論理和です。 ところで・・・・+と=を取るのはe.getKeyCode()とe.getModifiesEx()の組み合わせではなくe.getKeyChar()を使うという手も考えられます。

izuuuu
質問者

補足

回答ありがとうございます。という事はif(e.getModifiersEx() == InputEvent.SHIFT_DOWN_MASK)でshiftキーを押したとわかるんですよね? もしそのほかのshiftキープラス「何かのキー」を検出した場合は、 if(e.getModifiersEx() == InputEvent.SHIFT_DOWN_MASK)でshiftを押したことを検出しておいてそのあとgetKeyChar()などをつかい何のキーを押したか条件分岐すればよいということでしょうか?? すおません><

関連するQ&A