mardi 3 mars 2015

Java - Superposer un JLabel sur un JToggleButton

Bonjour, Dans un travail, nous voulons représenter le plus fidèlement possible l'interface du logiciel Paint ( et ses fonctionnalités ! ). Nous voulons entre autres représenter les boutons permettant de changer la couleur avec une zone de couleur :


Il est donc composé d'un JToggleButton auquel on ajoute un JLabel. Pour éviter les problèmes de rafraîchissement, nous allons miser sur le fait qu'un JToggleButton est un conteneur. Nous allons donc créer et ajouter le JLabel au JToggleButton plutôt qu'à un JPanel. On doit cependant y aller dans le code plutôt qu'avec l'onglet Design.

Dessiner votre JButton normalement dans l'onglet Design. Trouvez-le dans votre code ( constructeur ). Suite à sa création,  ajoutez les lignes de code suivantes :

boutonCouleur1 = new JToggleButton("Couleur 1");
boutonCouleur1.setLayout( new FlowLayout()); // on assigne un FlowLayout au bouton car il sera un conteneur, un FlowLayout permettra de positionner le JLabel contenant la couleur plus facilement.
labelCouleur1 = new JLabel(); // création du JLabel, a été déclaré comme variable d'instance
labelCouleur1.setOpaque(true); // afin qu'il ne soit pas transparent, qu'il puisse représenter une couleur comme le noir dans celui ci-haut
boutonCouleur1.add(labelCouleur1); // le lable est ajouté au JToggleButton



On retourne dans l'onglet Design. Dans la fenêtre de structure, on voit que le JLabel est à l'intérieur du JToggleButton. Si on sélectionne le JLabel, il est minuscule ( qu'un point ). On doit le redimensionner. Étant donné qu'il est dans un FlowLayout, on doit le redimensionner avec la propriété preferredSize ( dans les propriétés avancées ). 

Le tour est joué ! Pour écrire couleur1 sur le JToggleButton, vous pouvez modifier la propriété verticalAlignment à Bottom.




Aucun commentaire: