Derniers sujets






Ajouter un menu à vos logiciels

Voir le sujet précédent Voir le sujet suivant Aller en bas

Ajouter un menu à vos logiciels

Message  Zepalkia le Lun 23 Jan - 21:19

Un élément important de n'importe quel logiciel qui se respecte est évidemment un menu, vous savez, la barre en haut de quasiment tous vos logiciels avec des menus déroulants qui permettent d'activer ou de désactiver un certain nombre de truc ? Very Happy
Et bien c'est tout sauf compliqué de rajouter un menu de ce genre via votre JFrame de votre logiciel que vous êtes en train de développer, c'est juste un peu long à expliquer mais ne vous en faites pas, c'est vraiment très simple.
Nous allons ici apprendre plein de choses, à la fin de ce tutoriel vous saurez :

  • Ajouter une barre de menu et des sous menus
  • Utiliser des conditions if non plus avec des nombres mais du texte
  • Créer une option permettant de quitter ou de réinitialiser votre application
  • Générer un message de confirmation avant de quitter votre programme via le menu
  • Générer ce message dans d'autres situations avec différentes options
  • Optionnel Créer un système de mot de passe stricte pour un jeu


Voilà voilà, c'est pour ça que ça va vous paraître long mais en réalité c'est très court à faire une fois qu'on a compris, le plus dur c'est d'expliquer tout ça donc je vais essayer Wink




Premièrement, je pars ici du principe que vous possédez déjà un JFrame qui fonctionne, commencez donc par implémenter la ligne de code suivante dans les bibliothèques java à importer :
Code:

import java.awt.event.ActionListener;

Ceci va vous permettre d'ajouter un "ActionListener" (un "écouteur d'action" en français mal traduit Very Happy ) soit une méthode permettant de faire faire n'importe quoi à votre programme dès que quelque chose a été activé (en l’occurrence, les options de votre menu).
À présent, implémentez votre ActionListener comme vous le feriez par exemple pour un KeyListener, si votre JFrame se nomme Launcher (dans mon exemple), cela vous donnera donc :

Code:

public class Launcher extends JFrame implements ActionListener

Vous suivez jusqu'à présent ? Le plus difficile reste à venir Wink premièrement on va définir l'existence d'une barre de menu, rajoutez donc ceci à la suite de la dernière ligne (où vous définissez vos variables quoi) :

Code:

JMenuBar menuBar = new JMenuBar();

Rajoutons ensuite quelque chose à cette barre de menu, en général il y a plusieurs onglets comme "Fichier" ou "options", nous allons donc rajouter ces onglets, un seul en l’occurrence mais si vous comprenez comment cela fonctionne pour un, vous arriverez à en rajouter d'autres. Rajoutez donc à la suite la ligne suivante :

Code:

JMenu menu = new JMenu("Fichier");

Cela va donc définir un nouvel élément de menu que l'on va rajouter par la suite à votre barre, ici ce sera l'onglet "Fichier" mais vous pouvez bien sur remplacer ce nom ou rajouter d'autres onglets sans problèmes Wink il suffit de changer le nom "menu" par "menu2" par exemple pour rajouter un autre onglet et ainsi de suite.
Nous allons maintenant encore définir quelque chose, le plus important, à savoir les objets qui seront cliquable dans votre onglet, comme je l'ai dit au départ, nous allons rajouter ici deux de ces objets, un pour créer un mot de passe pour la programmation d'un jeu vidéo à niveaux (cela sera développé de manière optionnelle par la suite) ainsi qu'une option permettant de quitter l'application, insérez donc encore à la suite les deux lignes suivantes si vous le voulez bien :

Code:

    JMenuItem m2 = new JMenuItem("Mot de passe");
    JMenuItem m3 = new JMenuItem("Quitter le jeu");

m2 et m3 sont ici les deux options qui s'afficheront lorsque l'on activera le menu "Fichier", vous pouvez bien sur en rajouter plein d'autres par la suite dès que vous aurez bien compris comment cela fonctionne mais pour le moment restons en à ceux-ci.
Maintenant que tout est bien défini, il va falloir afficher tous ces éléments de menus parce que pour le moment rien ne s'affiche, rentrons donc maintenant dans votre JFrame afin de déclarer tous ce qu'on vient de rajouter.

Commençons par rajouter des ActionListener à nos éléments de menu, pour qu'ils puissent agir et recevoir des informations (que l'on clique dessus fasse bouger quelque chose quoi), pour ce faire rajoutez les lignes suivantes :

Code:

        m2.addActionListener(this);
        m3.addActionListener(this);

Bien sur, c'est à rajouter pour tous les éléments mX que vous possédez selon le nombre que vous avez choisis de rajouter.
Nous allons à présent rajouter à notre onglet "Fichier" que l'on a nommé "menu" ces deux objets de la manière suivante :

Code:

        menu.add(m2);
        menu.add(m3);

Là aussi, modifiez les noms et rajouter tout ce qui est nécessaire si vous avez créé d'autres onglets ou objets pour votre menu.
Rajoutons maintenant à notre barre de menu notre onglet (si vous en avez plusieurs complétez mon exemple ) de la manière suivante :

Code:

menuBar.add(menu);

Il ne nous reste qu'un tout petit détail pour que tout s'affiche bien, à savoir rajouter la barre de menu en elle même, là c'est plutôt facile il vous suffit de rajouter la ligne suivante :

Code:

setJMenuBar(menuBar);




Compilez et testez, logiquement votre menu devrait apparaître sans problème, si ce n'est pas le cas re-faites toutes les étapes pour voir si vous n'avez rien oublié (sauf si c'est moi qui ai oublié quelque chose, dans ce cas merci de me le signaler Rolling Eyes )
Nous allons passer désormais à la partie "amusante" du processus : donner des actions à toutes vos options. Ben oui parce que c'est bien beau d'avoir un menu, sauf que si cliquer dessus ne fait rien il ne sert pas à grand chose; du coup on va changer tout ça en rajoutant d'abord l'option permettant de quitter le jeu afin de vous donner un exemple et vous apprendre comment rajouter une fenêtre de confirmation, c'est du 2 en 1 en fait Wink

Pour commencer, rajoutez les lignes suivantes :

Code:

public void actionPerformed( ActionEvent evt )
    {
}

C'est là dedans, entre les accolades, que vous allez mettre tout le code qui va suivre et développer votre menu. Rajoutez-y le code suivant :

Code:

if( evt.getSource() instanceof JMenuItem)
        {
}
repaint();

C'est là dedans que vous allez mettre tout le code suivant Very Happy oui ça fait beaucoup d'embranchement mais c'est normal et obligatoire; si vous avez bien suivi logiquement vous devriez avoir ça :

Code:

public void actionPerformed( ActionEvent evt )
    {
            if( evt.getSource() instanceof JMenuItem)
        {
    }
repaint();
}

Nous allons à présent rajouter, dans le if cette première ligne de code :

Code:

String ChoixOption = evt.getActionCommand();

Cela va tout simplement servir à générer des conditions if se basant sur du texte et non plus sur des variables numériques. Je vais à présent vous donner tel-quel la portion de code qui va faire que votre option "Quitter le jeu" va afficher une demande de confirmation puis, si vous cliquez sur "oui", va fermer le programme. Insérez-y donc à la suite de la dernière ligne, les explications suivent juste après Wink

Code:

if(ChoixOption.equals("Quitter le jeu") )
            {
                JOptionPane d = new JOptionPane();
                int reponse = d.showConfirmDialog(this,
                "Quitter le jeu en cours vous fera perdre votre progression, êtes-vous sur ?",
                "Quitter ?", JOptionPane.YES_NO_OPTION);
                if( reponse == JOptionPane.YES_OPTION )
                {
                    System.exit(0);
                }
                else
                {
                }
            }

Bon ok ça peut paraître barbare, mais c'est très simple à expliquer. Après ça, vous pourrez faire tout et n'importe quoi avec tous vos objets de votre menu alors accrochez vous, c'est presque fini.
Premièrement le if général que vous venez de rajouter ne s'active que si l'objet du menu "Quitter le jeu" a été activé (si on a cliqué dessus quoi), c'est ça que vous devez changer pour chacun de vos objets, selon le nom que vous leur aurez donné.

La ligne suivante va définir un JOptionPane, une fenêtre d'option intégrée de base dans le SDK de java qui va être bien pratique ici puisqu'elle servira de message de confirmation. Notez que c'est inutile si ça ne vous intéresse pas; techniquement à partir de là vous pouvez mettre n'importe quoi dans votre if, vous savez désormais comment rajouter des actions à vos éléments de menu Wink Mais je vais poursuivre jusqu'au bout, une petite option pour quitter et une fenêtre supplémentaire c'est jamais de refus, ça peut toujours servir.

La variable "reponse" se construit de la sorte :

Code:

d.showConfirmDialog(this,
                "Message_a_afficher",
                "Nom_de_la_fenêtre", JOptionPane.Type_de_fenêtre);
Spoiler:

Les types de fenêtres différents (donnant lieu à différentes réponses par défaut à cocher) sont :
DEFAULT_OPTION
YES_NO_OPTION
YES_NO_CANCEL_OPTION
OK_CANCEL_OPTION

Vous pouvez ainsi personnaliser totalement vos fenêtres. Et désormais, si vous avez cliqué sur oui, si réponse est donc égale à l'option "YES", vous quittez votre programme via la ligne System.exit(0); qui ferme directement et sans autres préavis votre logiciel.
Le else vide permet simplement de ne pas faire freezer le programme au cas où vous cliquez sur "non", il est donc indispensable même s'il reste vide Wink




Pfiou, alors je ne sais pas du tout si c'est compréhensible, j'ai essayé mais de mon point de vue je ne sais pas si c'est simple à comprendre et à appliquer ou non; de ce fait, et avant de continuer avec mon système de mot de passe, prenez le temps de lire tout ça et faites moi part de vos critiques s'il y a des passages durs à comprendre ou si, tout simplement, il manque des trucs qui font que ça ne marche pas, c'est possible que j'ai pu oublier certains détails, personne n'est parfait

_________________







Zepalkia
Admin
Admin

Avertissement : aucun avertissement
Messages : 883
Date d'inscription : 23/12/2009
Age : 24

http://sos-internautes.forumactif.com

Revenir en haut Aller en bas

Ajouter un raccourci clavier aux options du menu

Message  Zepalkia le Sam 25 Fév - 12:39

Ceci est un appendice au tutoriel permettant de créer un menu en Java, il va vous permettre de créer des raccourcis claviers pour chaque objet que vous rajoutez dans vos menus et de manière très très simple puisqu'il s'agit que d'une seule ligne de code à rajouter.
Celle-ci va paramétrer simplement une combinaison de touche (dans notre exemple CTRL+Q) ce qui aura pour effet de déclencher l'action liée à l'option visée par ce raccourci (par exemple fermer la fenêtre du logiciel); petit bonus, la combinaison de raccourci s'affichera même dans votre menu, à côté de l'option, et le tout en une seule ligne de code que voici :

Code:

m3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,InputEvent.CTRL_MASK));


Rappelez-vous, nous avons créé des objets pour notre menu que nous avions appelés m1, m2 et m3; et bien avec cette ligne de code, l'objet m3 sera activé avec la combinaison de touches CTRL+Q.

Il vous suffit simplement de modifier "VK_Q" par la touche de votre choix ("VK_H" ou "VK_LEFT" (touche fléchée) par exemple) pour créer des raccourcis pour tous les autres objets de vos menus, très très simple à utiliser mais il fallait la trouver cette méthode

_________________







Zepalkia
Admin
Admin

Avertissement : aucun avertissement
Messages : 883
Date d'inscription : 23/12/2009
Age : 24

http://sos-internautes.forumactif.com

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum