À l'aide d'un Composite avec une valeur null mise en page
J'ai donc une classe appelée CalendarPanel
qui s'étend JPanel
. Il utilise un null mise en page. Comment puis-je utiliser CalendarPanel
comme un élément régulier? Quand je l'ai mis dans un autre JPanel
, puis l'ajouter à la fenêtre, il disparaît. Il n'est visible que lorsque je l'ajouter directement à une fenêtre.
EDIT:
Et oui, je me rends compte à l'aide d'un JPanel
avec une valeur null mise en page est une mauvaise pratique. CalendarPanel
est en fait quelqu'un d'autre code, et je suis en train de l'utiliser pour mes besoins, sans avoir à refactoriser.
- "À l'aide d'un Composite avec une valeur null mise en page" Doooooooooooon pas!
- "..CalendarPanel qui s'étend Composite" Pourquoi? Ou plutôt, pourquoi ne pas simplement utiliser une instance d'un panneau?
- S'il vous plaît montrer votre code.
- Thompson, Pourquoi ne pas faire une classe qui étend la classe Composite? Je suis en train de faire une assez grande de demande, donc je suis la création de différentes classes pour les différents composants GUI de façon à rester un peu organisé.
- "rester quelque peu organisé," je ne vois pas le lien. Je pourrais créer une classe pour un
CalendarComponent
qui n'est pas explicitement étendre quoi que ce soit, avec ungetGui()
méthode qui crée et renvoie uneJComponent
(qui peut être unJPanel
ou d'autres choses). En général, voir la héritage vs composition. - Maintenant je comprends ce que vous dites. Comme mentionné dans mon edit au dessus, c'est pas mon code.
Vous devez vous connecter pour publier un commentaire.
C'est parce qu'une fenêtre utilise un BorderLayout par défaut et automatiquement redimensionner le panneau aux dimensions de la fenêtre.
L'est, car un Composite utilise un FlowLayout par défaut et un flux de mise en page respecte la taille préférée des composants ajoutés. Puisque vous utilisez un null mise en page de votre panneau n'a pas une taille par défaut si rien n'est peint.
C'est pourquoi vous ne devez PAS utiliser null mise en page. Au lieu de cela utiliser la mise en page des gestionnaires parce qu'ils font tout ce travail supplémentaire pour vous.
NOTE: c'est une très mauvaise idée en général d'utiliser une valeur null mise en page. Utiliser un
LayoutManager
à la place.Si vous insistez sur l'utilisation de null mise en page, vous allez à la position de la
JPanel
manuellement comme indiqué dans le la documentation. Voici un exemple.