2013-05-24 16 views
12

In questo pezzo di codice:GUI Java: circa getContentPane() metodo e contenuti

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

posso vederlo fa una nuova etichetta e lo aggiunge al JFrame oggetto frame. Ma voglio capire che cosa fa getContentPane() e perché ne ho bisogno?

Ho letto this API ma non ho ancora capito.

+0

bella storia: https://weblogs.java.net/blog/hansmuller/archive/2005/11/jframeadd_conte.html – Maroun

+0

lool, tale articolo disadattato xd – Sunset

+0

"Per convenienza' add' e le sue varianti sono stati ... sovrascritto per inoltrare al 'contentPane' come necessario." - ['JFrame'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html) – trashgod

risposta

8

Ogni JPanel è un contenitore, quindi o aggiunto ad un pannello quindi aggiunto al contenitore o direttamente utilizzare add(component) o utilizzare getContentPane().add metodo sia aggiungere il componente alla container a java 7 (non so versione 6 hanno un problema con questo o non).

+2

L'inoltro a la funzione 'contentPane'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html) è stata visualizzata in Java 5. – trashgod

2

Un JFrame è il conduttore che viene assemblato con altri sottocomponenti. Con getContentPane() ottiene il componente che rappresenta il contenuto di un'interfaccia utente grafica. Ad esempio, una JMenuBar viene posizionata in un'altra area accanto al contentPane di una cornice.

24

Ogni contenitore di livello superiore di Swing (e JInternalFrame) ha il nome di JRootPane. Questo è responsabile della gestione effettiva del layout generale della finestra.

enter image description here

Il pannello principale ha un certo numero di strati, uno dei quali è il riquadro del contenuto. Quando si aggiunge qualcosa ad un telaio (in quanto Java 5 credo), viene aggiunto automaticamente al riquadro del contenuto per voi, prima di questo, si doveva chiamare getContentPane().add(...) te

Date un'occhiata a How to use RootPanes

+0

+1, un post piacevole e adatto. Comprendere da neofiti come me :) Grazie –

3

A container ha diversi livelli in esso. Puoi pensare a un livello come una pellicola trasparente che si sovrappone al contenitore . In Java Swing, il livello utilizzato per contenere oggetti è chiamato il riquadro del contenuto . Gli oggetti vengono aggiunti al livello del riquadro del contenuto del contenitore .

Il getContentPane() metodo recupera lo strato riquadro contenuti in modo che è possibile aggiungere un oggetto ad esso. Il riquadro del contenuto è un oggetto creato dall'ambiente Java run time. Non è necessario conoscere il nome del riquadro del contenuto per utilizzarlo. Quando si utilizza getContentPane(), l'oggetto del riquadro del contenuto viene quindi sostituito in modo che sia possibile applicarvi un metodo.