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

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

0

Dimensionクラスのフィールドの使い方が理解できないです。

Java初心者です。
入門書に沿って一通りコーディングしてみてるんですが、
今日Dimensionクラスのwidth, heightというフィールドを使っているソースが出てきたのですが、
今まで自分が扱ってきたクラスの使い方とちょっと違っていて理解できません。
該当箇所は下記です。
-----------------------------------------------------
 /*JLabelのインスタンスのコンストラクタに入力されたmsgのサイズを取得*/
 Dimension dim = label.getPreferredSize();

   system.out.println("フィールドwidthの値は" + dim.width + "です。");

-----------------------------------------------------

今までは、インスタンスのフィールドやメソッドを使ったことはあるのですが、
下記の様に使っていました。

   ?クラス名A 変数名 = ?new クラス名A();

   ?インスタンス名.フィールド名 という形で使う


という風に"クラス名A"のインスタンス化をして
?"クラス名A"のオブジェクト型変数を用意して、
?"クラス名A"のコンストラクタの戻り値を代入する。
?の形でインスタンスのフィールドを使う。


今回は?の操作を行なっていないので、Dimensionクラスのインスタンスは作られてないと考えていいのでしょうか?

しかし、その後の出力している箇所で
   dim.width

となっていて、これは、インスタンス名.フィールド名という形ですよね。
ということは、Dimensionのインスタンスは何処かで作られているのでしょうか?

しかし、ソースを見てもDimensionがnewされているところは見当たりません。

どう解釈すれば良いのでしょう?

すいません、オブジェクト指向とかクラスという概念自体始めてなので
混乱しています。

ご回答よろしくお願いします。

6

回答

5206

閲覧

6件の回答

評価

0

>Java初心者です。
こういうのは書かないでいい。

>ソースを見てもDimensionがnewされているところは見当たりません。
どこのソースを見たの。
JLabelにだってソースがあるんだよ。

評価

0

$さん、回答有難うございます。

>>ソースを見てもDimensionがnewされているところは見当たりません。
>どこのソースを見たの。
>JLabelにだってソースがあるんだよ。

自分が見たのは自分が書いたソースコードだけです。
JLabelでDimensionがnewされてるかまではちょっとそこまでは考えてなかったです。

JLabelの中でDimensionクラスはnewされていると考えて良いのでしょうか?

また、そういったことはJDKのAPI仕様書からも読み解けるのでしょうか?

評価

0

自分が書いてない処理が行われているなら、自分が書いてないところで行われていると考えるしかないでしょ。
とくにJavaのような言語においては、大抵のプログラムでは自分の書いたところは全体のごく一部だと考えた方が良い。

評価

0

JDKのAPI仕様からも読み解けるしJavaのGUI設計に組み込まれている。Componentとして扱われているクラス郡は全てComponentを継承して作成されている。

で、getPreferredSizeはDimensionを返す。
なので実際にDimension自体を持っているのはComponentなのでComponentのソースを見ればわかる。

new(生成)自体をどこで行うかはその派生クラスなどによっても様々だしsetPreferredSizeもあるので自身でnewしたDimensionを設定することも可能。
もちろん上記以外の操作(メソッド)によって書き換えられていることも多々ある。

というか私の主観ですがGUIはまだ敷居が高いのでは?
GUIの設計思想とある程度の憶測が建てれないと、とてもじゃないけどGUI開発は難しいと思います。

評価

0

ん〜、なんか違うな。
申し訳ない。訂正します。

>というか私の主観ですがGUIはまだ敷居が高いのでは?
>GUIの設計思想とある程度の憶測が建てれないと、
>とてもじゃないけどGUI開発は難しいと思います。

勉強しないと覚えられないことなので最初はこれ呼んだらこの情報が取得出来て、これに設定したらちゃんと反映されるぐらいの考えでいいんではないでしょうか?

疑問に思うことは全然悪いことじゃないし、それを理解する労力と時間があるならいいと思いますがGUI系のクラス構成などは非常に複雑なので初期段階から深く追求するのはあまりお勧めしません。

>Java初心者です。

と言っているぐらいであれば他に覚えないといけないことは山ほどあるはず。

評価

0

私は訂正前の意見寄りだな。

GUIは確かに複雑だが、それでもやはり基礎の上にあるものであって、最初に覚えた事柄が通用しない世界ではない。
そして今回の問題も、GUIに依存した部分ではない(クラスではなく考え方)。

それなりに動かしたところで「分かったつもり」になって先へ進むと、どうしても後でつまづいてしまう。それは得てして、実は基礎的なところになる。
とくに基礎は、飽きるほど試行を繰り返して、完全に消化することを考える。

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