JavaにおけるPanelとFrameの主な違いは、Panelがフレームや他のパネルの内部領域で、複数のコンポーネントをグループ化するのに役立つのに対し、Frameはサイズ変更可能で移動できるタイトルバー付きの独立したウィンドウで、他のすべてのコンポーネントを含んでいることです。
Javaは汎用的な高水準プログラミング言語であり、依存関係をできるだけ少なくするように設計されています。
Java のソースコードは、バイトコードと呼ばれる中間コードに変換されます。
JVMを搭載しているプラットフォームであれば、バイトコードを実行することができます。
このように、Javaはプラットフォームに依存しない言語なのです。
Javaの主な利点は、強力なGUI(グラフィカル・ユーザー・インターフェース)を開発するためのAPIを提供していることです。
AWTはAbstract Window Toolkitの略で、そのようなAPIの1つです。
パネルとフレームは、AWTの2つのコンポーネントです。
パネルとは
Panel は、複数のコンポーネントを配置することができるコンポーネントです。
Panel クラスを使用して作成します。
このクラスは、Container クラスを継承しています。
以下のプログラムを参照してください。
図1: シンプルなGUIアプリケーション
上記のプログラムでは、fはFrameオブジェクト、panelはPanelオブジェクトです。
パネルオブジェクトはsetBoundsメソッドで指定された位置に配置されます。
パネルの色はGrayです。
b1 はボタンオブジェクトで、指定された位置に配置されています。
ボタンの色は青です。
そして、b1ボタンがパネルに追加され、パネルがフレームf1に追加されます。
最後に、フレームf1がコンポーネントで可視化されます。
フレームとは
Frameは、GUIアプリケーションのメインとなるトップレベルウィンドウとして動作するコンポーネントです。
これはFrameクラスを使って作成されます。
どのようなGUIアプリケーションでも、まず最初にフレームを作成します。
フレームを作成するには、Frameクラスを拡張する方法と、Frameクラスのオブジェクトを作成する方法の2つがあります。
上のプログラム(図1)によると、fはFrameオブジェクトです。
これに他のGUIコンポーネントが追加されます。
最後に、フレームが表示されます。
フレームはサイズ変更と移動が可能なウィンドウです。
タイトルバーもあります。
Frameのデフォルトの可視性はhiddenです。
プログラマーは、setVisibleメソッドを使用して値 “true “を与えることによって、それを可視化する必要があります。
Javaにおけるパネルとフレームの関係
- Panelを表示するには、Frameが必要です。フレームは、パネルまたはパネルのセットで構成することができます。
Javaにおけるパネルとフレームの違い
定義
JavaにおけるPanelは、他のPanelを含む他のGUIコンポーネントを取り付けることができる単純なコンテナを表すAWTコンポーネントです。
JavaにおけるFrameは、ボーダーとタイトルを持つトップレベルのウィンドウであるAWTコンポーネントです。
このように、JavaにおけるPanelとFrameの根本的な違いを説明します。
クラス階層
JavaにおけるPanelとFrameの主な違いは、PanelがContainerのサブクラスであるのに対し、FrameはWindowのサブクラスである点です。
一方、WindowはContainerのサブクラスです。
クラス宣言
また、Panel のクラス宣言は、public class Panel extends Container implements Accessible です。
一方、Frameのクラス宣言は、public class Frame extends Window implements MenuContainer.となります。
タイトルバー
さらに、Panel にはタイトルバーがありません。
Frameはトップレベルのウィンドウなので、タイトルバーがあります。
ボーダー
JavaにおけるPanelとFrameのもう一つの違いは、Panelにはボーダーがないのに対して、Frameにはボーダーがあることです。
別項目への追加
また、既存のパネルに別のパネルを追加することは可能です。
しかし、フレームを別のフレームに追加することはできません。
したがって、この点もJavaにおけるPanelとFrameの大きな違いです。
依存性
Panelは、Frameに依存します。
しかし、Frameは独立した出力ウィンドウです。
デフォルトレイアウトマネージャー
Panel は、FlowLayout をデフォルトのレイアウトマネージャとして使用し、Frame は、BorderLayout をデフォルトのレイアウトマネージャとして使用します。
この点も、Java における Panel と Frame の違いと言えます。
結論
簡単に説明すると、PanelとFrameはAWTの2つのコンポーネントです。
JavaにおけるPanelとFrameの主な違いは、Panelがフレームや他のパネルの内部領域で、複数のコンポーネントをまとめるのに役立つのに対し、Frameは他のすべてのコンポーネントを含むタイトルバーを持つサイズ変更可能で移動可能な独立したウィンドウである点です。