Médiaforma

Java – Un programme de dessin à main levée

Print Friendly

La plupart des applications Java sont dotées d’un système de menus. Il est vrai que c’est un moyen simple, fiable et universel de demander l’exécution d’une action. Cette section vous montre comme il est simple d’ajouter un système de menus dans une application Java avec NetBeans. Vous y découvrirez également comment générer des menus contextuels (Popup Menus) qui réagiront au clic droit de la souris.

Nous allons définir une petite application de dessin qui permettra de tracer des carrés et des ronds :

Créez un nouveau projet de type Java/Java Application sans créer de fonction main.

Ajoutez un JFrame form.

Insérez un contrôle Menu Bar.

 

 

Renommez les deux commandes de menu principales en Application et Couleur.

Glisser-déposer trois Menu Item : un sur le menu Application, deux sur le menu Couleur. Renommer ces « menu items » Quitter, Bleu et Rouge.

Définissez les procédures événementielles pour les trois commandes de menu.

private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
  System.exit(0);
}

 

private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
  couleur = java.awt.Color.BLUE;
}

private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {
  couleur = java.awt.Color.RED;
}

Définissez la variable couleur comme ceci, dans la partie inférieure du code :

java.awt.Color couleur = java.awt.Color.BLACK;

Cliquez droit sur le JFrame et définissez les procédures événementielles de souris suivantes : Mouse/MousePressed(), Mouse/MouseReleased() et MouseMotion/MouseDragged() :

private void formMousePressed(java.awt.event.MouseEvent evt) {
    pointX1 = evt.getX();
    pointX2 = evt.getX();
    pointY1 = evt.getY();
    pointY2 = evt.getY();
    sourisClic = true;
    repaint();
}

private void formMouseReleased(java.awt.event.MouseEvent evt) {
    sourisClic = false;
}

private void formMouseDragged(java.awt.event.MouseEvent evt) {
    if (sourisClic) {
        pointX1 = pointX2;
        pointY1 = pointY2;
        pointX2 = evt.getX();
        pointY2 = evt.getY();
        repaint();
    }
}

Lorsque le bouton gauche de la souris est enfoncé, la position pointée est mémorisée dans les variables pontX1/pointY1 et pointX2/pointY2, on mémorise que le bouton est enfoncé et on repeint la fenêtre.

Lorsque le bouton gauche de la souris est relâché, on le mémorise en mettant à false la variable booléenne sourisClic.

Lorsque la souris est déplacée bouton gauche enfoncé (formMouseDragged et pas formMouseMoved), le point d’origine du nouveau segment pointX1/pointY1 est initialisé avec l’extrémité du dernier segment pointX2/pointY2, et l’extrémité du nouveau segment est initialisé avec la position de la souris, puis la fenêtre est repeinte.

Définissez les variables suivantes dans la partie inférieure du code :

int pointX1, pointX2, pointY1, pointY2;
boolean sourisClic = false;

Il ne reste plus qu’à définir la méthode paint() qui va repeindre la fenêtre :

public void paint(Graphics g) {
  g.setColor(couleur);
  g.drawLine(pointX1, pointY1, pointX2, pointY2);
  setJMenuBar(jMenuBar1);
}

La couleur de tracé est initialisée avec la variable couleur, le segment X1/Y1->X2/Y2 est tracé, puis le menu est retracé avec setJMenuBar(jMenuBar1); car il avait été effacé par le rafraîchissement de la fenêtre.

Vous avez aimé cet article ? Partagez-le avec vos réseaux...
 
Comments

No comments yet.

Leave a Reply