- ベストアンサー
javaGUIインスタント変数とローカル変数
- Java GUIでのインスタント変数とローカル変数についての質問です。
- 質問の内容は、「ボタンを押してもJTableが表示されない」というエラーに関するものです。
- 要約すると、インスタント変数pとローカル変数pの違いを理解してコンポーネントを正しく貼り付ける方法を知りたいとのことです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
コンストラクタにある、 JPanel p = new JPanel(); ↓ p = new JPanel(); としてください。 JPanel p = new JPanel(); だと、このコンストラクタメソッド内でのみ利用できるJPanel変数pを作って、それに設定することになります。つまり、インスタンス変数pと同じ名前のローカル変数を作ってそっちに代入してしまうわけです。p = new JPanel();だと、既に用意されている変数pに代入します。
その他の回答 (1)
- kmee
- ベストアンサー率55% (1857/3366)
その前回のときもヒント出したんだけどね。 > インスタント変数pとJPanel p;で定義した、ローカル変数(おそらく。別の変数だよ、という意見がありましたら、ご指摘ください)は別物で、デバッグを行ったらローカルのp の中身は、null(何も入ってない)といわれてしまいました ぜんぜん理解できてないみたいじゃないですか。 ちゃんと理解したなら、はっきり「ローカル変数」と「インスタンス変数」が区別できるはずですよ。 変数とかメソッドとかクラスとかの「名前」には、それぞれ有効な範囲が(スコープ)があって、他のスコープの名前とは重ならないようになっています。 そうでないと、うかつに変数名をつけられないからです。 例えば、よくつかうfor ( i=0;...)などつかう変数 iが、どこかで使われてたら、知らないところで書き換えられて、ループ回数が変になる、なんてことがあると困りますよね? 変数の種類とスコープは、基本中の基本です。 それが理解できないうちは、GUIでのプログラミングなんて早すぎます。 まずは、基礎の学習をしっかりやってください
お礼
回答ありがとうございます。 私が扱った本では、メイン変数とSTATIC変数の説明しかされていなかったので、それ以外の変数に関しては皆無でした。 ネットなどをみて勉強したのですが、たりないみたいですね。(ネットのものは、理解しにくいものが多い) 色々参考書を見ながら、勉強していきたいと思います。
お礼
解決できした!!! ありがとうございます!! 本当に感謝です