Bonjour,
Je rencontre des difficultés lors de l'ajout de plusieurs (classes héritant de) JComponent (de taille différente) dans un JPanel sans layout (soit avec un FlowLayout).
Ces difficultés sont liées à la fonction getPreferredSize que je suis obligé de redéfinir dans ma classe héritant de JComponent afin que ceux-ci ai une taille différente de 0 et s'affichent.
En fait, j'arrive à tout afficher sans problême si je déclare une instance de classe héritant de JComponent qui va tracer toutes mes figures géométriques (que j'aurais voulu tracer séparément en tant que JComponent distinct) en une seule fois fois avec un seul appel à paintComponent et avec un getPreferredSize qui fait la taille du JPanel.
Seulement, cette méthode me pose des difficultés par la suite car j'aimerai traiter chacune de ces formes géométriques comme des objets à par entière, avec des Listeners spécifiques etc....
Mon objectif est donc de les paint 1 par 1 dans mon JLabel en tant que JComponent distinct...
Or si je laisse un getPreferredSize me renvoyant la taille de mon JPanel, il n'y aura qu'un seul élément qui pourra se paint dans mon JPanel (le 1er appelé par paintComponent) car il va prendre toute la place. Il sera bien placé mais prendra toute la place...
Le gros hic vient quand je renvoye une taille différente (inférieure) de celle du JPanel dans mon getPreferredSize.
Le programme ne va alors plus placer correctement mes JComponent dans mon JPanel.
En fait le programme semble allouer une place égale aux dimensions renvoyé par getPreferredSize() centrée sur mon JPanel et dessine dans celle-ci, non dans le JPanel.
Par exemple, si je paint un rectangle aux coordonnées x=0, y=0 dans la fonction paintComponent de (ma classe héritant de...) mon JComponent avec un getPreferredSize correspondant à la largeur et à la hauteur de mon rectangle, celui-ci sera centrée dans le JPanel et pas du tout en haut à gauche.
Pourriez-vous m'aider?
En vous remerciant par avance
Partager