• ベストアンサー

数字が描かれたボタンを繰り返し処理で描きたい。

アプレットを勉強している初心者です。 数字(1~9)が描かれたボタンを繰り返し処理で9個描きたいのですが、以下のような感じでいけると思い挑戦したのですが、ボタンには全て「u」が表示されてしまいます。 for(int u = 1; u < 10; u++){ Button b2 = new Button("u"); b2.setLocation(20*u+1,220); b2.setSize(20,20); add(b2); } Buttonの引数がintならいけるのかなぁと初心者な考えで試してみたのですが、それは受け付けなかったようで手の打ちようが無くなってしまいました。 もし、アドバイスがいただけたら、よろしくお願いします。

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

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

たびたびすみません。。 Button b2 = new Button(String.valueOf(u)); これでもいけますね。 先ほどのやりかたは個人的にはあまり好きな方法ではなかったので… こっちの方がカッコイイかもしれません… まぁ気持ちの問題ですのでどちらでもかまいません。 どちらもButtonクラスのコンストラクタにString型の引数を渡しています。 javaをやるときは http://java.sun.com/j2se/1.4/ja/docs/ja/api/index.html を参考にするといいかと思います。。(バージョン違ったらすみません) もっとベテランになれますょ

rapun
質問者

お礼

>たびたびすみません。。 いえいえ嬉しいです。ありがとうございます。 >Button b2 = new Button(String.valueOf(u)); なるほど、そんな書き方もあるのですね。 ところで一つの質問の中にもう一回質問するというのはよくないかもしれませんが、(""+u)というのは「""」の外にuを書くと変数uが指す値を「""」の中に入れられる、という理解でいいでしょうか? もしよければよろしくお願いします。

その他の回答 (3)

  • neko_noko
  • ベストアンサー率45% (146/319)
回答No.4

基本的に、"u"と書くと、「u」というString型の文字になります(こういうのをリテラルと言います) これは文字であって、このソースの中にあるint型の変数uとは違うものです。 なので、new Button(u);はだめだったわけです。 >、(""+u)というのは「""」の外にuを書くと変数uが指す値を「""」の中に入れられる、という理解でいいでしょうか? う~ん、残念ながら違います。 ""+u これは、""というString型の文字(何も指定しない文字で、空文字と言います)と、uをつないだものです。 何でこんなことをするかというと、こうするとString型になるからです。 Javaには、String型の文字とintなどをつなぐと、その結果はStringに変換されるというルールがあります。 そこで、String型文字として、空文字を用意して、それとint型のuをつないだのです。 これでuの値が文字になって、new Button()の引数に入れられるわけです。 >Button b2 = new Button(String.valueOf(u)); そういえば、そんな書き方がありましたね。ついでに、 Button b2 = new Button(Integer.toString(u)); こんなやり方もあります。でもmasaru2032さんのやり方の方がいいかな。

rapun
質問者

お礼

詳しくて親切な回答ありがとうございます。 >これは、""というString型の文字(何も指定しない文字で、空文字と言います)と、uをつないだものです。 何でこんなことをするかというと、こうするとString型になるからです。 ほぉ~、そうだったんですか。一つ賢くなった気がします。ありがとうございます。 別のやり方も解説していただきありがとうございます。

回答No.2

すみません! だめでした! なので、とりあえず Button b2 = new Button(""+ u); ってなカンジで

rapun
質問者

お礼

おーー!!いけました! 見たことない書き方なので、自分だけじゃいつまでも出来なかったかもしれないです。 ちょっとその書き方の意味を調べてみようかと思います。 ありがとうございます。m(_ _)m

回答No.1

Button b2 = new Button(u); これでだめですか??

rapun
質問者

お礼

回答ありがとうございます。 Eclipseでやっているのですが、「コンストラクターButton(int)は未定義です」となってエラーが出てしまいます・・・。