• ベストアンサー
  • すぐに回答を!

マウスのボタン判定について

仕事でJAVAを使ってWINDOWSのアプリ画面を作っています。 質問なのですが、マウスイベントで右ボタン、左ボタンどちらが押されたか 判定すると思いますが、 1.右ボタンが押された場合、左ボタンは押されているか? という所で詰まっています。逆のパターンは判定できたのですが、何故か1のパターンが 判定できません。 ・JAVAのバージョン(1.3.1) ・開発端末のOS(WindowsXP HomeEdition) public void mousePressed( MouseEvent e ) { int modifiers = e.getModifiers(); // 右左同時押しの場合 if (( modifiers & InputEvent.BUTTON1_MASK ) == InputEvent.BUTTON1_MASK && ( modifiers & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK ) { // この判定には入る。 System.out.println( "同時押しです。" ) ; } // 左ボタンが押された場合 else if ( ( modifiers & InputEvent.BUTTON1_MASK ) == InputEvent.BUTTON1_MASK ) { // 右ボタンも押されているか? if ( ( modifiers & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK ) { // この判定には入っている。 System.out.println( "右ボタンも押されています。" ) ; } } // 右ボタンが押された場合 else if ( ( modifiers & InputEvent.BUTTON3_MASK ) == InputEvent.BUTTON3_MASK ) { // 右ボタンも押されているか? if ( ( modifiers & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK ) { // この判定には入らない。 System.out.println( "右ボタンも押されています。" ) ; } } } ※(大雑把に書くとこんな感じです。) 個人的にはJAVAのバージョンに依存するものなのかなぁと考えているのですが、 1.3.1では駄目なのでしょうか? 乱文、雑文ではありますが、ぜひともご教授をお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数7
  • 閲覧数708
  • ありがとう数4

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

  • ベストアンサー
  • 回答No.2

試しました。 質問者さんのコードをそのままコピペしました。 最初のif文の // 右左同時押しの場合 if ( ( modifiers & InputEvent.BUTTON1_MASK ) == InputEvent.BUTTON1_MASK && ( modifiers & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK ) { // この判定には入る。 System.out.println( "同時押しです。" ) ; } には入りませんでした。 上記判定に入るってことは true && false が true ってことになりますよ??? ここに載せてるソースと質問者さんが試しているソースが違うということはありませんか? 自分のはjavaのバージョンが1.4.2ですが、 true && false が true になることはないと思います…。 ついでに「右ボタンも押されています。」も両方とも同じメッセージなので、このメッセージだけで判断することは不可能だと思いますが…。 いちおう自分が試したソースを載せておくので、自分のものに間違いがあったらご指摘下さい。 (質問部分はコメントアウトしていて、同時判定版になっています…) ------------------------------------------------ import java.awt.*; import java.awt.event.*; public class Oshiete extends Frame implements MouseListener{ private boolean hidari = false; private boolean migi = false; public Oshiete(){ super(); setSize(100,100); addMouseListener(this); setVisible(true); } public void mouseClicked(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mouseReleased(MouseEvent e){ int hoge = e.getModifiers(); if(hoge == InputEvent.BUTTON1_MASK){ hidari = false; }else if(hoge == InputEvent.BUTTON3_MASK){ migi = false; } } public static void main(String args[]){ Oshiete o = new Oshiete(); } public void mousePressed( MouseEvent e ) { /*int modifiers = e.getModifiers(); // 右左同時押しの場合 if ( ( modifiers & InputEvent.BUTTON1_MASK ) == InputEvent.BUTTON1_MASK && ( modifiers & InputEvent.BUTTON3_MASK ) == InputEvent.BUTTON3_MASK ) { // この判定には入る。 System.out.println( "同時押しです。" ) ; } // 左ボタンが押された場合 else if ( ( modifiers & InputEvent.BUTTON1_MASK ) == InputEvent.BUTTON1_MASK ) { // 右ボタンも押されているか? if ( ( modifiers & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK ) { // この判定には入っている。 System.out.println( "右ボタンも押されています。hoge" ) ; } } // 右ボタンが押された場合 else if ( ( modifiers & InputEvent.BUTTON3_MASK ) == InputEvent.BUTTON3_MASK ) { // 右ボタンも押されているか? if ( ( modifiers & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK ) { // この判定には入らない。 System.out.println( "右ボタンも押されています。" ) ; } } */ int hoge = e.getModifiers(); if(hoge == InputEvent.BUTTON1_MASK){ hidari = true; }else if(hoge == InputEvent.BUTTON3_MASK){ migi = true; } if(hidari && migi){ System.out.println("同時押し"); }else{ System.out.println("片方のみ"); } } }

共感・感謝の気持ちを伝えよう!

質問者からのお礼

すいません。弱冠間違ってました。 で、こちらで調べた所、バージョンが1.4以下の場合は 判定できない場合があるとの記述を見かけました。 (以下がそのサイトです。) http://java.sun.com/j2se/1.4/ja/docs/ja/guide/awt/AWTChanges.html pcbeginnerさんがおっしゃられた「同時押しには入らない」部分に関しても何度も確認して入っていたので、 おかしいなと思っていました。 こちらのバージョンが1.3であるため、pcbeginnerさんと違う結果になっていたようです。 とりあえずどうするかまたこちらで考えたいと思います。 ご教授、ご指摘ありがとうございました。

関連するQ&A

  • JAVAで素数判定

    JAVAの勉強をしてます 練習問題で、素数判定のプログラムをしているのですが。 1~14までの判定はうまくいきますが、15の判定の時に素数であると表示されて困ってます。どなたかわかりませんか? //読み込んだ数字 n が 15 の場合 if(n == 1) System.out.println("素数ではありません。"); if(n == 2) System.out.println("素数です。"); for (int i = 2; i < n; i++) { if (n % i == 0) { System.out.println("素数ではありません。"); break; } else { System.out.println("素数です。"); break; } } --結果---------------------------------------------- 素数です

    • ベストアンサー
    • Java
  • 全角スペースの判定について

    全角のスペースを文字コードにて判定したいのですが、 うまく判定できません。 0x8140だと思うのですが。。。。 以下のソースを実行すると半角は通るのに全角は NGになってしまいます。どなたがご存知方はご教授のほど宜しくお願いいたします。 public class test {  public static void main(String[] args) {      String s = "| | |";      for (int i = 0; i < 4; i++) {           System.out.println("" + s.charAt(i));   }      char c = s.charAt(1);    if (0x8140 == c) { System.out.println("全角判定OK");    } else { System.out.println("全角判定NG");    }   c = s.charAt(3);    if (0x0020 == c) { System.out.println("半角判定OK");    } else { System.out.println("半角判定NG");    }  } }

    • ベストアンサー
    • Java
  • 後方一致判定(java)がうまくいきません

    今、後方一致判定のプログラムを作成しているんですけど、うまくいかなくて困っています。 例えば、0で判定した場合、コマンドプロンプトに100.100.0.0 100.100.2.0 100.100.3.0が出力可能ですが、100で判定させても、100.100.0.0 100.100.2.0 100.100.3.0が出力されるようになっています。 これを、0で判定した場合、100.100.0.0 100.100.2.0 100.100.3.0と出力され、100で判定した場合、何も出力されていないプログラムを作りたいと考えています。 現状のプログラムは以下のようになっています。 //後方一致判定 if(searchWord. endsWith("0")){ System.out.println( "100.100.0.0"); System.out.println( "100.100.2.0"); System.out.println( "100.100.3.0"); } else{ System.out.println( "" ); }

その他の回答 (6)

  • 回答No.7

提示されているソース、最後の判定で両方とも「InputEvent.BUTTON3_MASK」にしていますが、これでいいのですか?

共感・感謝の気持ちを伝えよう!

質問者からの補足

ご指摘ありがとうございます。 BUTTON1_MASKが正しいです。(実際のソースもそうなっています。) 混乱させてしまいすいません。 とりあえずreleaseのタイミングでのフラグ制御で対処してみようと思っています。

  • 回答No.6

>やはり皆さんが言うようにreleasedのタイミングでフラグ制御が一番良いのでしょうか? う~ん。1番かどうかは分かりませんけど、 ぱっと思いついて、簡単にできそうなのは上記方法でしょうね…。(^^;A 自分もそんなに「発想」とか「閃き」がある方ではないので…。 (そういうのがすごい人が羨ましい。) あとは 「右ボタンが押されたときに左ボタンが押されているか?」 っていうときの ・押されていた場合の処理(つまり同時押し) を ・他のイベントで処理する とかではないでしょうか? (ユーザー(お客様)からの「どうしても」というお願いなら仕方ないですが…。) たとえばボタンを1つ増やして対応とか… いいアイデアではありませんが、代替案をあげるというのも1つの手かと…。 ↑のことを「設計から考え直してみます。」と言っていたのなら余計なお世話でしたね。(^^;A それでは。がんばって下さい。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

いえ、こちらが難しく考えすぎているのだと思っています。 こちらの方も助けていただいてありがたいと思っていますので、気になさらないでください。

  • 回答No.5

おはようございます。 おそらく質問者さんが >弱冠間違ってました。 とあるので、質問のソースが間違ってるのでしょう。 http://java.sun.com/j2se/1.4/ja/docs/ja/guide/awt/AWTChanges.html を読みましたが、 ---以下引用--------------------------------------- この欠陥を解決するために、次の定数が InputEvent に追加されました。 SHIFT_DOWN_MASK CTRL_DOWN_MASK META_DOWN_MASK ALT_DOWN_MASK ALT_GRAPH_DOWN_MASK BUTTON1_DOWN_MASK BUTTON2_DOWN_MASK …省略… ---以上引用--------------------------------------- とありますので、1.4を使用していても BUTTON1_MASKやBUTTON3_MASK を使用していれば同様のことが起きます。 1.4のInputEventのJavaDocにも ---以下引用--------------------------------------- BUTTON1_MASK public static final int BUTTON1_MASKマウスボタン 1 の定数です。代わりに、BUTTON1_DOWN_MASK を使用することをお勧めします。 ---以上引用--------------------------------------- とあります。 それではがんばってください。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

おはようございます。 よく考えてみるとpcbeginnerさんのおっしゃる通りですよね。 BUTTON1_MASKやBUTTON3_MASK を使用している時点で1.3でも1.4でも起こりえることですよね。 ただ、1.3では複数のボタンが押されていることを考慮されていないようなので、やはり皆さんが言うようにreleasedのタイミングでフラグ制御が一番良いのでしょうか? もうちょっと設計から考え直してみます。ありがとうございます。

  • 回答No.4

 こんばんは。 >で、こちらで調べた所、バージョンが1.4以下の場合は >判定できない場合があるとの記述を見かけました。  少し誤解をされているようですね。  1.4からならT0ngT0ngさんのおっしゃっているようにgetModifiersEx()を使って同時押しの判定ができますが、1.3だとこのメソッドがなく同時押しの判定ができないgetModifiers()を使わざるを得ません。  その場合は、pcbeginnerさんのおっしゃっているようなフラグを立てる方法でやるしかないと思います。  getModifiers()を使っている限り1.4と1.3の動作の違いは基本的にはありません。  それと、 >実際の作りは右ボタンを押されたタイミング(pressed) >でポップアップが出るのですが、  ポップアップメニューの出るタイミングがおかしいような気がします。  ちゃんと、MouseEventのisPopupTrigger()メソッドでポップアップを出すタイミングを計っていますか?

共感・感謝の気持ちを伝えよう!

質問者からの補足

返答遅れて申し訳ありません。 やはりフラグ制御が良いのでしょうか? もう少し設計を考え直してみようかな・・・。 ポップアップが出るタイミングについては少し文言がおかしかったです。申し訳ありません。 pressedのタイミングでポップアップが出る  ↓ pressedのタイミングでshowメソッドを使いポップアップを出している が正しいです。 pressedのタイミングで出すようにしているのは顧客からの要望なのでreleasedのタイミングで出すことは今のところありません。

  • 回答No.3

getModifiers()メソッドでは、そのイベントの発生元となったボタンしか戻ってきません。 そのイベント発生時に他のボタンの状態を調べる場合は、 getModifiersEx()を使用してください。 (この場合、判定するのは押されているかどうか、なので 見るべき定数はBUTTON1_DOWN_MASKとBUTTON3_DOWN_MASKになります。) ただし、ご質問のコードの場合、全てelse文でつながっていますので、 両方押されている場合、最初の条件に入るため、後のほうの 2箇所には入りませんね。

共感・感謝の気持ちを伝えよう!

質問者からの補足

おはようございます。返答遅れて申し訳ありません。 getModifiersEx()メソッドについても調べたのですが、 1.3だと無いようです。

  • 回答No.1

自分の勘違いだったらごめんなさい。 (実際に動かしてはいないのですが…。) 左右同時の場合は、この判定には入るとありますが本当に入りますか? int modifiers = e.getModifiers(); としているので、modifiersには左ボタン定数の値が入ってますよね? そうすると最初のif文の条件の ( modifiers & InputEvent.BUTTON1_MASK ) == InputEvent.BUTTON1_MASK はtrueになります。 でもその次の条件の ( modifiers & InputEvent.BUTTON3_MASK ) == InputEvent.BUTTON3_MASK はfalseになりませんか?この条件を判断するときの modifiers は左ボタン定数のままですよね? 大雑把に書いたとのことなので、実際はこうではないのかもしれませんが、 mousePressed() が呼ばれるのは1つのボタンが押されたときですので、同時押しを判定するとしたら 左ボタン押したフラグ と 右ボタン押したフラグ を作って、 mousePressed()で押されたボタンのフラグを立てて、もう一方のボタンのフラグの状態を判別する。 mouseReleasee()で話されたボタンのフラグを下げる。 というような感じにしないといけないのではないでしょうか???

共感・感謝の気持ちを伝えよう!

質問者からの補足

早速の解答ありがとうございます。 私も始めは最初のif文(左⇒右の判定)に入るかどうか気になって試したのですが、 左ボタンの定数を無視して右ボタンの判定に入るようです。(確認済み。) 理由は分かりません。ネットで調べてみたんですが、良い情報がありませんでした。 反対に(右⇒左)の場合はpcbeginnerさんのおっしゃるとおりになるようです。 mouseReleaseのタイミングでフラグを立てる事も考えましたが、 実際の作りは右ボタンを押されたタイミング(pressed)でポップアップが出るのですが、 ポップアップが出るとmousePressed以降のイベント(clicked、Released) のイベントが無視されるようで、フラグの制御が出来なくなって今います。 なのでフラグによる制御もあきらめました。

関連するQ&A

  • actionscript3.0でボタン操作無効化

    flashのHPを作っております。 (mc)ボタンを配置しクリックすると画面の背景が変わる操作をしたいと思っており(top、new、main・・・など) 下記のHPのような http://www.mediacreator.jp/tutorials/show_tutorial.asp?id=69&pn=3 操作ボタンを作っております。 上記HPは2.0で製作されているため、3.0に改変し、 アクションを下のようにしました。 var buttonNames= new Array("button1", "button2", "button3", "button4"); button1.buttonMode = true; button2.buttonMode = true; button3.buttonMode = true; button4.buttonMode = true; button1.addEventListener(MouseEvent.CLICK, button1click); button2.addEventListener(MouseEvent.CLICK, button2click); button3.addEventListener(MouseEvent.CLICK, button3click); button4.addEventListener(MouseEvent.CLICK, button4click); function resetButton(buttonName){ for(var i = 0; i < buttonNames.length; i++){ if(buttonNames[i] != buttonName){ this[buttonNames[i]].gotoAndStop(1); this[buttonNames[i]].enabled = true; } } } function button1click(event:MouseEvent):void { resetButton(button1); this.gotoAndStop(2); this.enabled = false; } function button2click(event:MouseEvent):void { resetButton(button2); this.gotoAndStop(2); this.enabled = false; } function button3click(event:MouseEvent):void { resetButton(button3); this.gotoAndStop(2); this.enabled = false; } function button4click(event:MouseEvent):void { resetButton(button4); this.gotoAndStop(2); this.enabled = false; } コンパイルエラーは無くなったのですが、ボタン自体が動いてくれません。 どこが間違っているか分かる方、お教え下さい!

  • ボタンの飛び先を一つにして、押したボタンのプロパティを変更するには?(超初心者)

    VBじゃないかもしれませんが・・・ HTMLファイルに、VBScriptで次のように書いたのですが、 <html> <head>   ////省略/// <SCRIPT>   ////省略/// Sub Button1_OnClick   ////省略///   Call XXXX EndSub Sub Button2_OnClick   ////省略///   Call XXXX EndSub Sub Button3_OnClick   ////省略///   Call XXXX EndSub  :  :  : Sub XXXX   ---ここで、押したボタンのいろんなプロパティを 変更したいのですが・・・変更の内容はどのボタンを押しても同じなので、ここでひとつにまとめたいんですが。たとえば、そのひとつとして、ボタンの画像を変えるとして・・・   Button(押したボタンの).Src = "sampleX.gif" End Sub </SCRIPT> </head> <body>   <input id="button1" type="button" name="button1" src="sample1.gif">   <input id="button2" type="button" name="button2" src="sample2.gif">   <input id="button3" type="button" name="button3" src="sample3.gif">  :  :  : つまり、押したボタンが何であったかを判別して、 維持することができないでしょうか? 素人です。よろしくお願いします。 ボタンは配列にできればしてもかまいません。 見当違いのスクリプトで、ほかにもっとよいスクリプトがあったら教えてください。

  • java 素数判定

    入力した数字が整数か否かを判定するjavaプログラムを作っています。 以下の通りコンパイルして実行しました。これだと実行したときに どんな数字を数字を入力しても「31は素数です。 」となります。 入力した数字を判定させるにはどのようにしたらいいのでしょうか? class Sosuu { public static void main (String[] args) { int n = 31; boolean isPrime = true; for (int i = 2; i <= n - 1; i++) if (n % i == 0) { isPrime = false; break; } if (isPrime) System.out.println(n + " は素数です。"); else System.out.println(n + " は素数ではありません。"); } }

    • ベストアンサー
    • Java
  • 改行の判定方法

    改行のみが入っているかどうかの判定が行いたいのです。 String TextData; if(TextData.equals(System.getProperty("line.separator"))){   System.out.println("改行"); } TextDataに改行だけ入っている可能性があるため、ifで判定してみたのですが、ひっかかりません。 どうやればよいのでしょうか。

    • ベストアンサー
    • Java
  • JavaにはなぜGO TO 命令がないのでしょうか?

    皆さん教えて下さい。私はCOBOLを長年手がけ、最近Javaを勉強している者です。 JavaにはなぜGO TO 命令がないのでしょうか? IF ネストというのは、わかりにくく、私は昔から嫌っておりました。 ところがJavaにはGO TO 命令が無いため、いやでもIF ネストを使わねばならないようです。 それともわかりやすく効率的なコーディングが別にあるのでしょうか?? 3択の問題で、下記AはJavaの教科書的コーディングです。3択だからまだしも複雑になると、IFネストはわかりにくいと私は思います。 下記Bはわかりやすいですが、無駄な処理が発生し、良くないコーディング例です。 下記CはCOBOLコ-ディングで、GO TOが使えるため、人間が読んでわかりやすく、処理効率もいいです。 ●この点Javaをやっている皆さんどうお考えですか??? ------------------------------------------------------------------------------------ A<教科書的サンプル> if(a > 0){ System.out.println("aは正の値です。"); }else if(a == 0){ System.out.println("aはゼロです。"); }else{ System.out.println("aは負の値です。"); } ------------------------------------------------------------------------------------ B<if ネストを嫌った サンプル> if(a > 0){System.out.println("aは正の値です。");} if(a == 0){System.out.println("aはゼロです。");} if (a < 0){System.out.println("aは負の値です。");}   処理効率悪く、良くないプログラム例 ------------------------------------------------------------------------------------ C<COBOL なら> IF a  >  0 DISPLAY "aは正の値です。"    GO TO OWARI. IF a  =  0 DISPLAY " aはゼロです。"   GO TO OWARI. IF a <  0 DISPLAY " aは負の値です。" . OWARI. .    GO TO 命令がある故に効率的 IF 構文の終わりと、OWARI の後ろにピリオドがあります。 ------------------------------------------------------------------------------------

    • ベストアンサー
    • Java
  • Visual C++ 2008 EEでボタンの判定、結果を配列に格納

    OSはXPでViaual C++ 2008 Express EditionのWindowsフォームアプリケーションにて一つのフォームで全132問に答えるというものを作成しています。フォームには[戻る]、[次へ進む]、[チェック除外]ボタンと「はい」、「いいえ」、「どちらでもない」のラジオボタン、問題文とタイマーのラベル、テキストボックス(問題番号を入力すると[戻る]ボタンが[移動]ボタンに変わり、入力した問題に進む)があります。最初に変数qに1を入れ、[次へ進む]を押すとqに1がプラスされswitch文で2問以降に進む(ラベルのみ切り替わる)というもので、最後の問題に行くと[次へ進む]ボタンが[終了]ボタンに変わります。ただし、全ての問題に解答していなければ終了できないようにしています。この解答結果をCSVに(はいなら1、いいえなら2、どちらでもないなら3)出力したいと考えているのですが、ラジオボタンにチェックを入れ、[次へ進む]ボタンを押したときのみ「インデックスが配列の境界外です」というエラーが表示されてしまいます。コードは以下の通りですが、どこを直せばよいのか分からないのでご教授願います。 private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { endflag = 0; this->button2->Text = "次へ進む"; if(flag == 1){ q = jump; flag = 0; this->button1->Text = "戻る"; this->textBox1->Text = ""; }else{ q--; } if(q == 1){ this->button1->Enabled = false; } switch(q){ case 1:                          ・                          ・                          ・                          case 132                           endflag = 1; break; }                            }: private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { String^ s = rtrstrg(); if(endflag == 1){ if(s == "") { MessageBox::Show("全ての質問に答えて下さい。","エラー"); } else if(MessageBox::Show("終了しますか?", "確認", MessageBoxButtons::OKCancel, MessageBoxIcon::Question) == System::Windows::Forms::DialogResult::OK) { this->Close(); } } q++; this->button1->Enabled = true; switch(q){ case 2:                      ・                      ・                      ・                      case 132                       endflag = 1;    break; }                      }: private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) { this->radioButton1->Checked = false; this->radioButton2->Checked = false; this->radioButton3->Checked = false; } private: System::Void chg(System::Object^ sender, System::EventArgs^ e) { bool result = int::TryParse(textBox1->Text, jump); if(jump > 0 && jump <= 132){ if(jump != q){ this->button1->Text = "移動"; this->button1->Enabled = true; flag = 1; } } else{ textBox1->Text = ""; this->button1->Text = "戻る"; flag = 0; } } private: System::String^ rtrstrg() { String^ s; for(int i=1; i<=QSTNB; i++) { s += this->rtrdt(i); if(s->EndsWith("×")) { return ""; } } return s->Remove(s->Length - 1); } private: System::String^ rtrdt(int qstn) { //配列の宣言 array<RadioButton^>^ arb = gcnew array<RadioButton^>(SZBH); for(int i=0; i<SZBH; i++) { arb[i] = dynamic_cast<RadioButton^>(this->Controls->Find("radioButton"+(qstn*SZBH-SZBH+1+i), true)[0]); } return this->chck(arb); } private: System::String^ chck(array<RadioButton^>^ arb) { for(int i=0; i<arb->Length; i++) { if(arb[i]->Checked == true) { return i + 1 + ","; } } return "×"; }

  • 分からない課題

    課題内容: CodeZine: Swing再入門 JavaにおけるGUIのレイアウト http://codezine.jp/article/detail/1626 を参考にして、BoxLayoutを使い6つのボタンを上から button5 button4 button3 button2 button1 button0 と表示するプログラムのソース、"BL.java"を作成しなさい。先頭のpackageの記載がある行は不要です。 、、、という課題が授業で出たのですが全く分かりません。 今、javaを勉強している途中なのですがまだ理解が浅く、このような難しいプログラミングがわからない状態です。 どなたか宜しくお願いします。。

  • GUIを使用した電卓のボタンの表示について

    Javaの課題で電卓を制作しています。 まず見た目だけ完成させるべくボタンを配置を配置しましたが、 実行してみると正しく表示されるときと、されないときがあります(画像参照)。 現時点でのコードを掲載いたしますので、是非アドバイスをいただけると幸いです。よろしくお願いします。 ■以下コード package add; import java.awt.Button; import java.awt.Frame; import java.awt.TextField; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class Calc extends Frame{ public static void main(String[] args){ Calc frame = new Calc(); } public Calc(){ super("電卓"); setSize(317,360); setVisible(true); addWindowListener(new CalcWindow()); //下記のウィンドウを閉じる用 //ボタンとフィールドの追加 TextField result = new TextField(""); result.setBounds(20,50,270,50); add(result); result.setFocusable(false); Button button1 = new Button("1"); button1.setBounds(20,120,70,30); add(button1); Button button2 = new Button("2"); button2.setBounds(100,120,70,30); add(button2); Button button3 = new Button("3"); button3.setBounds(180,120,70,30); add(button3); Button button4 = new Button("4"); button4.setBounds(20,165,70,30); add(button4); Button button5 = new Button("5"); button5.setBounds(100,165,70,30); add(button5); Button button6 = new Button("6"); button6.setBounds(180,165,70,30); add(button6); Button button7 = new Button("7"); button7.setBounds(20,210,70,30); add(button7); Button button8 = new Button("8"); button8.setBounds(100,210,70,30); add(button8); Button button9 = new Button("9"); button9.setBounds(180,210,70,30); add(button9); Button button0 = new Button("0"); button0.setBounds(100,255,70,30); add(button0); Button buttonC = new Button("C"); buttonC.setBounds(20,255,70,30); add(buttonC); Button buttonasta = new Button("."); buttonasta.setBounds(180,255,70,30); add(buttonasta); Button buttonplus = new Button("+"); buttonplus.setBounds(260,120,30,30); add(buttonplus); Button buttonminus = new Button("-"); buttonminus.setBounds(260,165,30,30); add(buttonminus); Button buttonkakeru = new Button("×"); buttonkakeru.setBounds(260,210,30,30); add(buttonkakeru); Button buttonsla = new Button("/"); buttonsla.setBounds(260,255,30,30); add(buttonsla); Button buttonE = new Button("="); buttonE.setBounds(20,300,270,30); add(buttonE); //ボタンとフィールドの追加ここまで } class CalcWindow extends WindowAdapter //ウィンドウを閉じる { public void windowClosing(WindowEvent e) { System.exit(0); } } } ※OKWAVEより補足:「Webシステム開発」についての質問です。

    • ベストアンサー
    • Java
  • ==の判定ができない

    System.out.println(request.getParameter("job")); の出力が2なのですが、 (request.getParameter("job")=="2")で判定されません。 なぜだか分かる人がいましたら、教えてください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • クラスのインスタンスからクラスを知る方法

    メソッドの中で引数がテキストボックスなのかボタンなのか判別させてください。 下のc == TextBoxの部分を正しくしてください。 public static void test1(Component c){ if(c == TextBox)System.out.println("テキストボックス"); if(c == Button)System.out.println("ボタン"); } コンポーネントは下のものです。 /com/nttdocomo/ui/Component.html

    • ベストアンサー
    • Java