• ベストアンサー

パネル生成メソッドの作り方

作成するパネルの数とを引数に与えると、そのパネルを作成して表示するメソッドを作りたいのです。 下記のようにすると "variable name method createPanelの宣言が重複しています"とエラーになってしまいます。 引数でもらってきた文字列を生成するパネルの名前にしたいのですが、なぜこれではいけないのですか? どうしたらよいのですか? 例) public void createPanel(String name) {  Panel name = new Panel(); }

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

  • ベストアンサー
  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.3

失礼しました。#1では勘違いしていました。 やりたいことはわかりましたが、 変数名を実行時に変えるのは不可能です。 もし、オブジェクトを、Stringで管理するとすれば、 java.utilの中のHashtableやMapを使って、 キーと値のペアとして管理します。 Hashtable hashtable = new Hashtable .... public void createPanel(String name) {  Panel namePanel = new Panel(); hashtable.put(name, namePanel); } (ただ取り出すときに注意。キャストが必要。 Panel panel = (Panel)hashtable.get(name);のように)

t-tree
質問者

お礼

たびたびのお答えありがとうございました。 例文読ませていただきました、今の私にはチト難しいですが、参考にさせていただきます。 いつも、いつも本当に感謝しています。 ありがとうございました。

その他の回答 (2)

回答No.2

>例) >public void createPanel(String name) { > Panel name = new Panel(); >} No.1の方の言う通り変数の名称は重複することは不可能です。 >>Panel namePanel = ...などとすればいいでしょう。 >これだと、namePanelという名前のパネルが作成されてし >まいませんか? 変数の名前を状況に合せて変更するというのはおそらくですけど不可能ではないでしょうか・・・(私の知識不足かもしれませんが・・・) インスタンスはどんな名前でも問題ないです。 publicとして使うんならこの名前を使用しますが。 Panelに名前をつけるとするなら以下のような感じです。 //////////////////////////////////////////////// public void createPanel(String name) { //Panelインスタンスの生成をします。  Panel namePanel = new Panel(); //生成インスタンスに引数の名前をセットします。 namePanel.setName(name) ; } //////////////////////////////////////////////// これでパネルに名前が付けられますがいかがでしょうか。

t-tree
質問者

お礼

ご回答ありがとうございました。 例のロジックまで記述していただき本当にわかりやすく、助かりました。

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.1

String nameとPanel nameで変数名がかぶってます。 Panel namePanel = ...などとすればいいでしょう。

t-tree
質問者

お礼

お答えありがとうございます。 >Panel namePanel = ...などとすればいいでしょう。 これだと、namePanelという名前のパネルが作成されてしまいませんか? パネルの名前をせっかく引数(String name)をもらってきているのだからその名前を作成するパネルの名前にしたいのです。 このメソッドを呼ぶ側で引数に"pnl1"としたら、"pnl1"という名前のパネルをこのメソッドで作成したいのです。

関連するQ&A