- ベストアンサー
Applet、Panelのクラス体系について
- AppletクラスはPanelクラスの拡張として、Webブラウザで実行されるコンポーネントを作成することができます。
- Panelクラスではできない、Webブラウザ上でのグラフィカルな操作やメディア再生などを、Appletクラスで実現することができます。
- Frameクラスはウィンドウを表すクラスであり、Panelクラスがその中に配置されることで、画面構成を行うことができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
PanelがFrameから派生するのはおかしくないかい。FrameにPanelがaddされるのは、GUI的に見れば「FrameがPanelを配置するプレースホルダーになる」という事で、それはそれで良いんだけど、それをFrameだから行える作業とすると、Appletを作ったらまたApplet#add(Panel)を用意しないといけない。 Panelを配置するプレースホルダーになる役割を担うのはPanelであり(Panel#add(Panel))、そしてPanelからFrameやAppletが派生するのでFrameもPanelのプレースホルダーとなれる、Appletも然り。 GUIのイメージ的にお話をすると、何の装飾もない平面の板(Panel)があって、板(Panel)には板(Panel)を乗せる事ができる。そして、外枠とかタイトルバーとか閉じるボタンとかで装飾したものがFrame(アプリケーション板)、Webブラウザー上でHtml中に埋め込まれる機能を装飾したものがApplet(埋め込みアプリケーション板)。Frame(アプリケーション板)はPanel(板)だからPanel(板)を乗せる事ができる。 PanelクラスからAppletが派生してできる事、というのはもう少しシステマチックに物事を捉えた方が良いかも知れない。Appletは前段の通りHTML埋め込みアプリケーションの事だが、これ(HTML中に埋め込まれる機能)はPanelにとっては必要の無い機能だ。 Panelが「板という概念」を表していて、Appletは具現的な「埋め込み板」をあらわしているわけだ。Frameは「独立してアプリケーション操作ができる板」になる。 板の方が抽象的で枠がある板とか埋め込まれる板の方が具体的だからこういう派生になっていると大雑把に捉えることもできる。板を板に乗せるというのも概念であらわした方が良い。フレームにはボタンを乗せる事ができる、フレームにはテキスト入力欄を乗せる事ができる、アプレットにはボタンを乗せる・・・・とやるより、 ・パネルにはパネルを乗せる事ができる ・フレームはパネルである ・アプレットはパネルである ・ボタンはパネルである ・テキストエリアはパネルである とやった方が概念が自動的に全てのGUIコンポーネントに適用されるので自然だ、という風に私は考えておりますですはい。
その他の回答 (1)
- mpro-gram
- ベストアンサー率74% (170/228)
super - sub の関係は既にご回答のあるとおり。 「addされるというイメージ」これは、super - sub ではなく、parent - child関係であり、 parentとchildは、直接のクラス派生関係は必要ありません。parent側に add(child) というメソッドが備わっていて、childのインスタンスを保持できればよいのです。 よって、parentは、conteiner 派生クラスである必要がある(他のクラスのインスタンスを保持してそれらも表示する機構が必要)けれど、childは、component派生クラス(自分を表示する機構をもつ、もちろんconteiner自身も含む)であればよい。
補足
Anmochiさん、回答有難うございます。 色々と頂いた回答について、私になりに考えては見たのですが、全体的にもうひとつ、 どのような意味か理解ができないのですが、再度補足をお願いできないでしょうか。 > Panelを配置するプレースホルダーになる役割を担うのはPanelであり(Panel#add(Panel))、 そしてPanelからFrameやAppletが派生するのでFrameもPanelのプレースホルダーとなれる、 Appletも然り。 # PanelからはFrameは派生していないのですが?