2013-05-24 11 views
12

In diesem Stück Code:Java GUI: etwa getContentPane() Methode und Inhalt

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

Ich sehe es ein neues Label macht und fügt sie das JFrame Objekt frame. Aber ich möchte verstehen, was macht getContentPane() tun, und warum brauche ich es?

Ich lese this API, aber ich habe immer noch nicht verstanden.

+0

Schöne Geschichte: https://weblogs.java.net/blog/hansmuller/archive/2005/11/jframeadd_conte.html – Maroun

+0

lool, dass Geek Artikel xd – Sunset

+0

"Als eine Annehmlichkeit' hinzufügen' und seine Varianten ... gewesen überschrieben, um bei Bedarf zum 'contentPane' weiterzuleiten." - ['JFrame'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html) – trashgod

Antwort

8

Jeder JPanel ist ein Container, also entweder zu einer Platte dann in den Behälter gegeben oder direkt add(component) verwenden oder getContentPane().add Methode verwenden, um sowohl die Komponente in den Behälter in java 7 (hinzufügen Ich weiß nicht, Version 6 haben ein Problem damit oder nicht).

+2

Die [Weiterleitung an Die 'contentPane'-Funktion (http://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html) erschien in Java 5. – trashgod

2

Ein JFrame ist die Kopfkomponente, die mit anderen Unterkomponenten zusammengefügt wird. Mit getContentPane() wird die Komponente abgerufen, die den Inhalt einer grafischen Benutzeroberfläche darstellt. Eine JMenuBar befindet sich beispielsweise in einem anderen Bereich neben dem contentPane eines Frames.

24

Jeder Swing-Container auf oberster Ebene (und JInternalFrame) hat eine so genannte JRootPane. Dies ist verantwortlich für die tatsächliche Verwaltung des gesamten Layouts des Fensters.

enter image description here

Der Wurzelbereich hat eine Reihe von Schichten, von denen die Inhaltsfenster. Wenn Sie etwas zu einem Rahmen hinzufügen (seit Java 5 glaube ich), ist es für Sie Inhaltsbereich automatisch hinzugefügt vor diesem, musste man getContentPane().add(...) nennen sich

Werfen Sie einen Blick auf How to use RootPanes

+0

+1, ein schöner und passender Beitrag. Begreife auch Neulinge wie mich :) danke –

3

A Container hat mehrere Ebenen. Sie können sich eine Schicht als transparente Folie vorstellen, die den Behälter überlagert. In Java Swing wird der Layer, der zum Halten von Objekten verwendet wird, als Inhaltsfenster bezeichnet. Objekte werden dem Inhaltsfenster-Layer des Containers hinzugefügt.

Die getContentPane() Methode ruft die Inhaltsbereich Schicht so dass man ein Objekt ihm hinzufügen. Der Inhaltsbereich ist ein Objekt, das von der Java-Laufzeitumgebung erstellt wird. Sie müssen den Namen des Inhaltsbereichs nicht kennen, um ihn zu verwenden. Wenn Sie getContentPane() verwenden, wird das Inhaltsfensterobjekt dort ersetzt, sodass Sie eine Methode darauf anwenden können.