Choix de couleurs et de dimensions par des menus surgissants

Choix de couleurs et de dimensions par des menus surgissants

Afficher un rectangle coloré dans une fenêtre. Un clic dans le rectangle fera apparaître un menu surgissant permettant de modifier les dimensions du rectangle ou sa couleur. Un clic en dehors du rectangle fera apparaître un menu surgissant permettant de modifier la couleur du fond.Les couleurs et leurs noms seront les mêmes pour le fond et pour le rectangle et ils seront fournis sous forme de tableaux en arguments du constructeur de la fenêtre.Le dessin d’un rectangle de couleur donnée se fait en appliquant au contexte graphique concerné successivement la méthode setColor (en argument l’objet de type Color voulu) et la méthode fillRect (int abscisse, int ordonnee, int largeur, int hauteur)).Nous dessinons dans un panneau dont nous redéfinissons classiquement la méthode paint- Component. Cela nécessite la création d’une classe spécialisée Panneau dérivée de JPanel.Dans le constructeur de la fenêtre, nous créons deux menus surgissants menuForme et menu- Fond. Le premier est constitué de deux sous-menus (de type JMenu) menuFormeDimensions et menuFormeCouleurs. Leurs options sont de type JMenuItem. Nous avons choisi d’écouter les différentes options dans la fenêtre elle-même (les écouter dans le panneau aurait nécessité de lui fournir les références de toutes les options concernées).Les variables couleurFond, couleurForme, l et h servent à mémoriser dans la fenêtre les dernières couleurs sélectionnées et les dimensions du rectangle. La méthode paintComponent du panneau y accède à l’aide des méthodes getCouleurFond, getCouleurForme, getLargeur et getHauteur.

Les variables couleurFond, couleurForme, l et h servent à mémoriser dans la fenêtre les dernières couleurs sélectionnées et les dimensions du rectangle. La méthode paintComponent du panneau y accède à l’aide des méthodes getCouleurFond, getCouleurForme, getLargeur et getHauteur.Le déclenchement des menus surgissants a lieu en cas de clic dans le panneau dont nous faisons son propre écouteur d’événements Mouse. Ici, l’affichage du menu est réalisé lors du relâchement du bouton attribué aux menus surgissants : nous redéfinissons mouseReleased et nous testons le bouton concerné à l’aide de la méthode isPopupTrigger de la classe MouseE- vent. L’objet panneau n’a besoin de connaître que la référence de la fenêtre et celles des deux menus surgissants. Celles-ci sont transmises au constructeur. /* creation menus surgissants Fond et Forme */ menuFond = new JPopupMenu () ; menuForme = new JPopupMenu () ; menuFormeCouleur = new JMenu (« Couleur ») ; menuForme.add (menuFormeCouleur) ; menuFormeDimensions = new JMenu (« Dimensions ») ; menuForme.add (menuFormeDimensions) ; /* creation des options */ nbCouleurs = couleurs.length ; optionsCouleurFond = new JMenuItem [nbCouleurs] ; optionsCouleurForme = new JMenuItem [nbCouleurs] ; for (int i=0 ; i<nbCouleurs ; {optionsCouleurForme[i]=newJMenuIte(nomsCouleurs[inomsCouleurs[i])optionsCouleurFond[i].addActionListener (this) ; menuFond.add (optionsCouleurFond[i]) ; } optionHauteur = new JMenuItem (« Hauteur ») ; optionLargeur = new JMenuItem (« Largeur ») ; menuFormeDimensions.add (optionHauteur) ; menuFormeDimensions.add (optionLargeur) ;• Événements de type MouseEvent liés aux boutons de la souris (rappel) ; méthodes mouse- Pressed, mouseReleased et mouseClicked• Identification du bouton de la souris ; méthodes getModifiers et constantes correspondantes InputEvent.BUTTON1_MASK, InputEvent.BUTTON2_MASK et InputEvent.BUTTON3_MASK• Gestion des déplacements de la souris ; méthodes mouseEntered, mouseExited, mouseMoved et mouseDragged

Identification des boutons de la souris

Afficher en permanence un segment dans une fenêtre. Son origine sera définie par un clic sur le bouton de gauche de la souris et elle se modifiera à chaque nouveau clic sur ce même bouton. Son extrémité sera définie de la même manière avec le bouton de droite : Événements de type KeyEvent ; méthodes keyPressed, keyReleased et keyTyped ; identification d’une touche par son code de touche virtuelle (méthode getKeyCode ) ou par le caractère corres- pondant (méthode getKeyChar ) ; connaissance de l’état des touches modificatrices (méthodes isXXXDown et getModifiers ) ; source d’un événement clavier

Pour obtenir la permanence du dessin, nous tracerons notre segment dans un panneau. Ici, il est plus simple d’écouter les clics (mouseClicked) dans le panneau lui-même. Pour identifier le bouton de la souris, nous utilisons la méthode getModifiers de la classe MouseEvent. Elle fournit un entier dans lequel un bit de rang donné, associé à chacun des boutons, prend la valeur 1. La classe InputEvent contient des constantes qu’on peut utiliser comme masque pour faciliter les choses ; ici, ce sont les constantes BUTTON1_MASK (bouton de gauche) et BUTTON3_MASK (bouton de droite) qui nous intéressent.Le segment est défini par les coordonnées de son origine (xOr et yOr) et celles de son extré- mité (xExt et yExt). Deux indicateurs booléens orConnue et extConnue permettent de savoir si ces informations sont disponibles (elles sont en fait placées à false au début du programme). Le dessin proprement dit est réalisé dans la méthode paintComponent qui exploite ces diffé- rentes informations. Notez qu’il est nécessaire d’appeler repaint après un clic gauche ou droite, afin de provoquer l’appel de paintComponent.

Cours gratuitTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *