deli2025
Messages postés40Date d'inscriptionvendredi 14 mars 2008StatutMembreDernière intervention 4 mai 2020
-
23 août 2012 à 11:14
deli2025
Messages postés40Date d'inscriptionvendredi 14 mars 2008StatutMembreDernière intervention 4 mai 2020
-
23 août 2012 à 13:15
Bonjour, je suis débutant en Java et j'ai encore du mal avec la POO...
J'ai un programme qui ce compose comme ceci :
- Class MonProgramme (main)
- Class Fenetre
- Class Container
- Class Menu
Pour l'instant, je gère les action du menu dans la Class Menu mais je souhaiterais le faire dans la Class MonProgramme...
Voici le code de ma Class Menu :
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
/**
*
* @author d3l1
*/
public class Menu extends JMenuBar implements ActionListener
{
private JMenuBar menu = new JMenuBar();
private JMenu fichier = new JMenu("Fichier");
private JMenuItem nouveau = new JMenuItem("Nouveau");
private JMenuItem charger = new JMenuItem("Charger");
private JMenuItem sauvegarder = new JMenuItem("Sauvegarder");
private JMenuItem quitter = new JMenuItem("Quitter");
private JMenu parametres = new JMenu("Paramètres");
private JMenuItem pause = new JMenuItem("Pause");
private JMenuItem reprendre = new JMenuItem("Reprendre");
private JMenuItem resolution = new JMenuItem("Résolution");
private JMenu aide = new JMenu("Aide");
private JMenuItem manuel = new JMenuItem("Manuel");
private JMenuItem apropos = new JMenuItem("À propos");
public Menu()
{
/*
* Ajout des éléments du menu
*/
this.menu.add(fichier);
this.menu.add(parametres);
this.menu.add(aide);
/*
* Ajout des éléments de l'onglet fichier
*/
this.fichier.add(nouveau);
this.fichier.add(charger);
this.fichier.add(sauvegarder);
this.fichier.add(quitter);
this.parametres.add(pause);
this.parametres.add(reprendre);
this.parametres.add(resolution);
this.aide.add(manuel);
this.aide.add(apropos);
/*
* Ajout du menu
*/
this.menu.add(fichier);
this.menu.add(parametres);
this.menu.add(aide);
/*
* Active l'écoute des onglets
*/
this.nouveau.addActionListener(this);
this.charger.addActionListener(this);
this.sauvegarder.addActionListener(this);
this.quitter.addActionListener(this);
this.pause.addActionListener(this);
this.reprendre.addActionListener(this);
this.resolution.addActionListener(this);
this.manuel.addActionListener(this);
this.apropos.addActionListener(this);
}
public JMenuBar getMenuBar()
{
return menu;
}
@Override
public void actionPerformed(ActionEvent e)
{
Object source = e.getSource();
/*
* Onglet Fichier
*/
if(source == nouveau)
{
System.out.println("Action de l'onglet : Nouveau");
}
if(source == charger)
{
System.out.println("Action de l'onglet : Charger");
}
if(source == sauvegarder)
{
System.out.println("Action de l'onglet : Sauvegarder");
}
if(source == quitter)
{
System.exit(0);
}
/*
* Onglet Paramètres
*/
if(source == pause)
{
System.out.println("Action de l'onglet : Pause");
}
if(source == reprendre)
{
System.out.println("Action de l'onglet : Reprendre");
}
if(source == resolution)
{
System.out.println("Action de l'onglet : Résolution");
}
/*
* Onglet Aide
*/
if(source == manuel)
{
System.out.println("Action de l'onglet : Manuel");
}
if(source == apropos)
{
System.out.println("Action de l'onglet : A propos");
}
}
}
Et voici le code de la Class MonProgramme :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package cossacks;
/**
*
* @author d3l1
*/
public class Cossacks
{
private Fenetre fenetre = new Fenetre();
private Container container = new Container();
private Menu menu = new Menu();
public Cossacks()
{
fenetre.setContentPane(container);
fenetre.setJMenuBar(menu);
fenetre.setJMenuBar(menu.getMenuBar());
fenetre.setVisible(true);
}
public static void main(String[] args)
{
new Cossacks();
}
}
J'ai essayer d'implémenter ActionListener ou item dans cette classe mais rien n'y fait...
Si quelqu'un pouvais m'éclairer sur la manière d'y parvenir... J'apprécierais.
A voir également:
Utiliser ActionListener en dehors la classe ou il est implémenté
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020371 23 août 2012 à 11:31
Salut,
C'est toujours une très mauvaise idée d'implémenter un actionListener dans la classe où il est utilisé. Ca t'oblige à récupérer la source et à faire une suite de if(source.equals(bouton)...
Le mieux est de créer une nouvelle classe
public class PauseListener implements ActionListener {
public PauseListener(){
super();
}
@Override
public void actionPerformed(ActionEvent e){
System.out.println("Action de l'onglet : Pause");
}
}
public class NouveauListener implements ActionListener {
public NouveauListener (){
super();
}
@Override
public void actionPerformed(ActionEvent e){
System.out.println("Action de l'onglet : Nouveau");
}
}
Tu fais ca pour toutes tes actions et au lieu de faire :
Et de cette manière, tu peux utiliser à deux endroits le même listener.
Si tu utilises un menu, je te conseil d'affecter tous tes listener au menu et ensuite, quand tu créé un bouton de lui donner le modele de ton menuitem :