Dans ce morceau de code:
JLabel emptyLabel = new JLabel("");
emptyLabel.setPreferredSize(new Dimension(175, 100));
frame.getContentPane().add(emptyLabel, BorderLayout.CENTER);
Je peux voir qu'il crée une nouvelle étiquette et l'ajoute à l'objet JFrame
frame
. Mais je veux comprendre ce que fait getContentPane()
et pourquoi en ai-je besoin?
J'ai lu cette API mais je n'ai toujours pas compris.
Chaque JPanel
est un conteneur, alors ajoutez-le à un panneau puis ajoutez-le au conteneur ou utilisez directement add(component)
ou utilisez la méthode getContentPane().add
. Les deux ajoutent le composant au conteneur dans Java 7 (je ne sais pas si la version 6 a un problème avec cela ou non).
Chaque conteneur de niveau supérieur Swing (et JInternalFrame) possède ce qu'on appelle un JRootPane
. Ceci est responsable de la gestion réelle de la disposition globale de la fenêtre.
Le volet racine comporte un certain nombre de couches, dont l'une est le volet de contenu. Lorsque vous ajoutez quelque chose à un cadre (depuis Java 5 je pense), il est automatiquement ajouté au volet de contenu pour vous, avant cela, vous deviez appeler getContentPane().add(...)
vous-même
Jetez un oeil à Comment utiliser RootPanes
Un conteneur contient plusieurs couches. Vous pouvez considérer un calque comme un film transparent qui recouvre le conteneur. Dans Java Swing, la couche utilisée pour contenir des objets est appelée volet de conten. Les objets sont ajoutés à la couche de volet de contenu du conteneur.
La méthode getContentPane () récupère le couche de volet de conten afin que vous puissiez y ajouter un objet. Le volet de contenu est un objet créé par environnement d'exécution Java. Vous n'avez pas besoin de connaître le nom du volet de contenu pour l'utiliser. Lorsque vous utilisez getContentPane()
, l'objet du volet de contenu y est alors substitué afin que vous puissiez lui appliquer une méthode.
Un JFrame est le composant principal qui est assemblé avec d'autres sous-composants. Avec getContentPane () obtient le composant qui représente le contenu d'une interface utilisateur graphique. Un JMenuBar par exemple est placé dans une autre zone à côté du ContentPane d'un cadre.