Création interface graphique avec Swing : les bases


précédentsommairesuivant

9. Ajouter une barre de menu à votre fenêtre

Maintenant que l'on a fait une calculatrice complète, on va y afficher un menu pour qu'elle fasse plus sérieuse. En Swing, pour mettre un menu sur votre JFrame, il faut employer une JMenuBar, qui sera composé de JMenu et de JMenuItem.

Un JMenu étant un bouton que l'on trouve directement dans la barre de tâches et il possède des JMenuITem qui sont eux des éléments du menu qui vont déclencher une action lors du clic.

Comme avec les boutons, il y a deux manières de gérer les actions des menus, les listeners ou les Action. Pour les listeners il suffit d'implémenter ActionListener sur la classe, d'utiliser la méthode addActionListener sur le JMenuItem pour ajouter le listener à l'élément de menu et de tester la source de l'événement pour savoir qui a cliqué. Je ne vais pas redétailler cette façon de faire ici. On va directement utiliser les actions.

Alors, on va faire deux menus :

  • Un menu "Calculatrice" avec un élément "Calculer" et un élément "Quitter"
  • Un menu "?" qui contiendra un bouton "A propos"

L'action de "Calculer" sera la même que celle du bouton Calculer, donc on va reprendre "CalculerAction". On va donc devoir créer "QuitterAction" et "AProposAction" :

 
Sélectionnez
public class AProposAction extends AbstractAction {
	private CalculatriceFenetre fenetre;
 
	public AProposAction(CalculatriceFenetre fenetre, String texte){
		super(texte);
 
		this.fenetre = fenetre;
	}
 
	public void actionPerformed(ActionEvent e) { 
		JOptionPane.showMessageDialog(fenetre, "Ce programme a été développé par <Nom du développeur>");
	} 
}
 
Sélectionnez
public class QuitterAction extends AbstractAction {
	public QuitterAction(String texte){
		super(texte);
	}
 
	public void actionPerformed(ActionEvent e) { 
		System.exit(0);
	} 
}

Rien qu'on ait pas vu dans ces deux actions.

On va donc reprendre le code de la calculatrice et y ajouter les éléments du menu.

 
Sélectionnez
//...
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
 
public class CalculatriceFenetre extends JFrame {
	//...
 
	private void build(){
		JMenuBar menuBar = new JMenuBar();
 
		JMenu menu1 = new JMenu("Calculatrice");
 
		JMenuItem calculer = new JMenuItem(new CalculAction(this, "Calculer"));
		menu1.add(calculer);
 
		JMenuItem quitter = new JMenuItem(new QuitterAction("Quitter"));
		menu1.add(quitter);
 
		menuBar.add(menu1);
 
		JMenu menu2 = new JMenu("?");
 
		JMenuItem aPropos = new JMenuItem(new AProposAction(this, "A propos"));
		menu2.add(aPropos);
 
		menuBar.add(menu2);
 
		setJMenuBar(menuBar);
 
		//...
	}
 
	//...
}

Comme vous le voyez, c'est tout simple. En plus, on n'a pas eu besoin de changer quelque chose pour le calcul, il suffit de prendre l'action déjà développée et tout fonctionne nickel.

Vous avez maintenant une jolie calculatrice avec un menu. Vous pourrez vous servir de ce menu en guise d'exemple pour toutes les autres applications que vous ferez ensuite.

Application complète
Votre première application graphique complète, à quand les prochaines

Sachez que vous pouvez aussi créer des sous menus, pour cela, il vous suffit d'ajouter un JMenu à un autre JMenu et ensuite des JMenuItem dans le JMenu imbriqué. Vous pouvez continuer d'améliorer ce programme pour vous familiariser avec tous les composants de base de l'interfaçage graphique en java.

Code complet :


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 Baptiste Wicht. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.