web-dev-qa-db-ja.com

Java GUI:getContentPane()メソッドとコンテンツについて

このコードでは:

_JLabel emptyLabel = new JLabel("");
emptyLabel.setPreferredSize(new Dimension(175, 100));
frame.getContentPane().add(emptyLabel, BorderLayout.CENTER);
_

新しいラベルが作成され、JFrameオブジェクトframeに追加されることがわかります。しかし、私はgetContentPane()が何をするのか、そしてなぜそれが必要なのかを理解したいのですか?

このAPI を読みましたが、まだ理解できませんでした。

15
Bersan

すべてのJPanelはコンテナであるため、パネルに追加してからコンテナに追加するか、add(component)を直接使用するか、getContentPane().addメソッドを使用します。両方ともJava 7でコンテナにコンポーネントを追加します(バージョン6でこれに問題があるかどうかわかりません)。

9
Caffe Latte

すべてのSwingトップレベルコンテナ(およびJInternalFrame)には、JRootPaneと呼ばれるものがあります。これは、ウィンドウの全体的なレイアウトを実際に管理する役割を果たします。

enter image description here

ルートペインには多数のレイヤーがあり、そのうちの1つはコンテンツペインです。フレームに何かを追加すると(Java 5だと思います)、自動的にコンテンツペインに追加されます。この前に、自分でgetContentPane().add(...)を呼び出す必要がありました。

RootPanesの使用方法 をご覧ください

25
MadProgrammer

containerにはいくつかのレイヤーがあります。レイヤーは、containerをオーバーレイする透明なフィルムと考えることができます。 Java Swingでは、オブジェクトを保持するために使用されるレイヤーはcontentペインと呼ばれます。オブジェクトはcontainerのコンテンツペインレイヤー。

getContentPane()メソッドは、コンテンツペインレイヤーを取得します。オブジェクトを追加します。コンテンツペインは、Javaランタイム環境によって作成されたオブジェクトです。コンテンツペインを使用するために名前を知る必要はありません。 getContentPane()を使用すると、そこにコンテンツペインオブジェクトが置き換えられ、メソッドを適用できるようになります。

5
Jaimin Patel

JFrameは、他のサブコンポーネントと一緒に配置されるヘッドコンポーネントです。 getContentPane()を使用すると、グラフィカルユーザーインターフェイスのコンテンツを表すコンポーネントが取得されます。たとえば、JMenuBarは、フレームのcontentPaneの隣の別の領域に配置されます。

2
Gary Klasen