2013-05-24 8 views
12

について:JavaのGUI:コードのこの部分でgetContentPane()メソッドおよびコンテンツ

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

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

私はthis APIを読みましたが、まだ分かりませんでした。

+0

ニースストーリー:https://weblogs.java.net/blog/hansmuller/archive/2005/11/jframeadd_conte.html – Maroun

+0

lool、そのオタク記事xd – Sunset

+0

"便利な' add'とその亜種...必要に応じて 'contentPane'に転送するようにオーバーライドします。 - [' JFrame'](http://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html) – trashgod

答えて

8

すべてのJPanelがコンテナであるので、パネルに追加のいずれか、次いで容器に添加し、または直接add(component)を使用するかgetContentPane().add方法を使用し、両方java 7容器にコンポーネントを追加(Iバージョン6を知らないましたこれに問題があるかどうかはです)。

+2

'contentPane'](http://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html)の機能がJava 5で登場しました。 – trashgod

2

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

24

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

enter image description here

ルート区画は、コンテンツペインでその一つの層数を有しています。あなたは(Javaの5ので、私は思う)フレームに何かを追加すると、自動的にこの前、あなたはgetContentPane().add(...)を呼び出す必要があった、あなたのためのコンテンツ・ペインに追加された自分自身

How to use RootPanes

+0

+1、すてきで適切な投稿です。私のような初心者にも理解しています:)ありがとう –

3

を見てみましょうコンテナには複数のレイヤがあります。レイヤーは、コンテナをオーバーレイする透明なフィルムと考えることができます。 Java Swingでは、オブジェクトを保持するために使用されるレイヤーはコンテンツペインと呼ばれます。オブジェクトはコンテナの内容ペインレイヤに追加されます。

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

関連する問題