Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

awtのCheckboxについて

AppletでCheckboxを1000個設置したいと思っています。
for文を使って色々試してみてCheckboxの変数名を連番にしようとしたのですが、for文中で変数名をどのように変更してよいのか分からず、恥ずかしながらコンパイルが通る状態にたどり着けません。

実際は簡単な問題な気がするのですが、色々検索して探してみても解決策が見つかりません。
簡単なソースでも良いので、AppletにCheckboxを1000個設置する方法を教えてください。よろしくお願いします。

6

回答

8452

閲覧

6件の回答

評価

0

動的に「変数名を」かえるのは無理です。
名前なら出来るけど。。。
作ったらMapかListにaddじゃダメでしょうか?

評価

0

早速回答ありがとうございます。
やっぱり変数名を変えるのは無理でしたか…

>作ったらMapかListにaddじゃダメでしょうか?
そのような方法を使うと、例えばどのようなソースになるでしょうか?
恥ずかしながらMapやListといったものをまだ十分に理解できていない段階なので。
方法は問わないので1000個設置できれる方法を教えてください。

評価

0

ではまずはご自分で作ったソースを上げてみてください。

コンパイルが通らなくてもいいんです。(最初はね)
人にやってもらうのは簡単だから、
自分で試行錯誤した結果を見せてくださいね。

只の丸投げになってしまったら不幸ですよ。
何が判らないのかを知ることが今後のためになると思います。


評価

0

人任せにしてしまいすいません。
それでは先ほど言ったfor文で試してみたソースを載せます。
でも見ても無茶な発想で変数名を変えようとする記述しているので解読不能だと思います。


public class Test extends Applet implements ItemListener
{
  int i=0;
  String abc;
  public void init()
  {
    setLayout(null);
    for(i = 0;i<1000;i++)
    {
      this.abc = "cb"+i;
      Checkbox this.abc = new Checkbox(i+"");
      add(this.abc);    
      this.abc.setBounds(50*i, 50, 30, 15);
      this.abc.addItemListener(this);
    }
  }
(略)
}

ここでやりたかったことは変数abcのデータを変えればCheckboxの変数もかわるかな?っていう安易な発想で書いたものです。
あとは上のfor文内で

Checkbox cb_toString(i) = new Checkbox(i+"");

とかしてみたり…
コンパイルが通る通らないの問題じゃなくて、文法がおかしいですよね。
最初はソースも載せようかと思いましたが、これを乗せてしまうと文法の勉強からして来いとかそういう次元の問題にされそうだと思ったのであえて載せませんでした。
しかし、丸投げの形になってしまったことはお詫びします。
お手数かけますが、よろしくおねがいします。

評価

0

項目がたくさんある場合は、変数名で考えるんじゃなくて、「n番目の項目」と考えるんですよ。
すでに上げられてますが、Listなら不特定多数の項目に対して「n番目の項目」という考え方ができます。

>変数abcのデータを変えればCheckboxの変数もかわるかな?
これの意味が受け取れないです。

>恥ずかしながらMapやListといったものをまだ十分に理解できていない段階なので。
ということなら、まずはアプレットの前にこっちをしっかり勉強しましょ。
MapやListは基本的なクラスで、しょっちゅうお世話になるもの。
アプレットという「応用編」の前に「基礎編」を固めましょう。

評価

0

$さん回答ありがとうございます。

>変数abcのデータを変えればCheckboxの変数もかわるかな?
これは本当にどうすれば解決できるのかが分からず、勝手な発想をして書いたものですので解釈できないと思います。

>MapやListは基本的なクラスで、しょっちゅうお世話になるもの。
>アプレットという「応用編」の前に「基礎編」を固めましょう。
おっしゃる通りだと思います。
私はやりたいことを優先して基礎の勉強を怠っていたと思います。
これからは基礎固めに専念して、その上で分からないことがあればまたここで質問させていただきます。
ありがとうございました。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。