web-dev-qa-db-fra.com

Java GUI: à propos de la méthode et du contenu getContentPane ()

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 JFrameframe. 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.

15
Bersan

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).

9
Caffe Latte

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.

enter image description here

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

25
MadProgrammer

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.

5
Jaimin Patel

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.

2
Gary Klasen