前提・実現したいこと
javafxで計算機をつくりたいが
0-9ボタン押下処理を以下のように10回記述しないで纏めたい
java
1 2 //------------ 3 //各種ボタン 4 //------------ 5 6 //数字 7 if(pushEqual==false) { 8 9 tbNum[0].setOnAction((ActionEvent event)->{ 10 hogestr =tf1.getText(); 11 tf1.setText(hogestr+"0"); 12 }); 13 tbNum[1].setOnAction((ActionEvent event)->{ 14 hogestr =tf1.getText(); 15 tf1.setText(hogestr+"1"); 16 }); 17 tbNum[2].setOnAction((ActionEvent event)->{ 18 hogestr =tf1.getText(); 19 tf1.setText(hogestr+"2"); 20 }); 21 tbNum[3].setOnAction((ActionEvent event)->{ 22 hogestr =tf1.getText(); 23 tf1.setText(hogestr+"3"); 24 }); 25 tbNum[4].setOnAction((ActionEvent event)->{ 26 hogestr =tf1.getText(); 27 tf1.setText(hogestr+"4"); 28 }); 29 tbNum[5].setOnAction((ActionEvent event)->{ 30 hogestr =tf1.getText(); 31 tf1.setText(hogestr+"5"); 32 }); 33 tbNum[6].setOnAction((ActionEvent event)->{ 34 hogestr =tf1.getText(); 35 tf1.setText(hogestr+"6"); 36 }); 37 38 tbNum[7].setOnAction((ActionEvent event)->{ 39 hogestr =tf1.getText(); 40 tf1.setText(hogestr+"7"); 41 }); 42 tbNum[8].setOnAction((ActionEvent event)->{ 43 hogestr =tf1.getText(); 44 tf1.setText(hogestr+"8"); 45 }); 46 tbNum[9].setOnAction((ActionEvent event)->{ 47 hogestr =tf1.getText(); 48 tf1.setText(hogestr+"9"); 49 }); 50 51 //小数点 52 tbOpe[7].setOnAction((ActionEvent event)->{ 53 if(pushDot==false) {//小数点は2回押せない 54 hogestr =tf1.getText(); 55 tf1.setText(hogestr+"."); 56 pushDot=true; 57 } 58 }); 59 }else { 60 System.out.println("pushEqualにつき入力不可"); 61 } 62 63
コードは, ファイル毎に, 入力枠の上辺にある <code> を押すと出てくる ``` で囲まれた "コード" という文字列を置き換える形でコピペしてください. 専用の枠内に(字下げ等もちゃんと)表示されるようになります.
その際, "ここに言語を入力" を java に置き換えると, java に合わせたフォントの変更等がされて, より読み易くなります.
ファイル名は枠の外側に書くか, 内部にコメント形式で含めてください.
> for文に入れたいのですが、調べてもよく分かりませんでした
どう調べてどう書いてあって何が分からなかったのでしょう.
やり方は一つではありません. 人に因り, 書き方に因り, バリエーションは多数あります.
>java初心者です
これを伝えるための「初心者アイコンです」改めてタイトルや本文に記載する必要はありません
質問の仕方やコードの貼り方が不勉強で、大変ご迷惑をおかけしました。ご指摘どうもありがとうございました。
ご質問は修正出来ますので, お試しになっては如何でしょうか.
修正しました。ご指摘どうもありがとうございました。
色々削りすぎです。単なる丸投げになってます。
もともとforがどうやら書いてたみたいですが、自身で書いて失敗してやってみないと身に付きませんよ。
回答につくようなコードはあくまで他人が書いた他人のコードです。
理解したいのでしたらまず自分で書きましょう。プログラム間違ったところでプログラムのエラーがでるだけでPCが壊れるようなことはまずありません。
回答ありがとうございます。クラスで処理するとこんなシンプルに記述できるんですね!
setOnActionの外側のifもstart後には通らないと知りませんでした。
うまくいかなかったコードは消してしまっていたので、自分でもどう記述していたのか分からなくなっていました。ちゃんと残しておけばよかった。
色々ご丁寧にありがとうございました。
if(pushEqual==false) に関しましては, 一つには start メソッドのこともありますが, 一度 setOnAction したものは内部で記憶されていますので, 以降 setOnAction をしたりしなかったりしても意味は無いと思います.
おそらくアクションを消す場合は setOnAction(null) とするのではないでしょうか.
回答1件
あなたの回答
tips
プレビュー