IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Agents de placement/Fenêtres Java Discussion :

Héritage d'événements


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 23
    Par défaut Héritage d'événements
    Bonjour,

    J'ai un ennui avec un programme qui ne fonctionne pas. Je pense avoir fait le tour, et je suis en manque d'inspiration pour le résoudre.

    Pour une interface graphique, j'ai crée un objet BarreDeMenu qui hérite de JMenuBar. J'ai crée un objet Fenetre (hérité de JFrame), dans lequel j'appelle BarreDeMenu, et d'autres éléments SWING. Dont un JPanel, auquel je mets un CardLayout pour naviguer dans mes menus. (Est-ce bien cette solution la plus efficace).

    class BarreDeMenu extends JMenuBar implements ActionListener{

    JMenu[] Menu = new JMenu[10];
    public JMenuItem[] MenuItem = new JMenuItem[30];
    Fenetre frame;

    /** Constructeur de BarreDeMenu
    * On référence le conteneur Fenetre pour gérer la mise à jour du
    * panneau central
    */
    BarreDeMenu(Fenetre parente){
    frame = parente;
    //etc... configuration barre de menu, addactionlistener
    }

    public void actionPerformed(ActionEvent evt){
    Object source = evt.getSource();
    frame.MiseAJour(source);
    }
    }
    Dans le programme principale :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    public class Fenetre extends JFrame {
     
        BarreDeMenu barre;
        JPanel pane,carte1,carte2,carte3; //TESTS
        JTextArea zone_message;
        CardLayout cc;
     
        public Fenetre() {
     
            // On règles les paramètres de la fenêtre.
            super("Tubtronics");
            this.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
     
            [b]BarreDeMenu barre = new BarreDeMenu(this);[/b]
     
            JPanel pane = new JPanel();
            CardLayout cc = new CardLayout();
            pane.setLayout(cc);
            pane.setBackground(Color.ORANGE);
            pane.setSize(500,500);
     
            JPanel carte1 = new JPanel();
            carte1.setSize(500,500);
            pane.add("Carte 1", carte1);
     
            JPanel carte2 = new JPanel();
            carte1.setSize(500,500);
            pane.add("Carte 2", carte2);
     
            JPanel carte3 = new JPanel();
            carte1.setSize(500,500);
            pane.add("Carte 3", carte2);
     
            JTextArea zone_message = new JTextArea();
     
            this.setLayout(new BorderLayout());
            add("North", barre);
            add("Center", pane);
            add("South", zone_message);
     
            }
     
    [b]    void MiseAJour(Object src) {
            for (int j=0; j<30;j++){
            if (src == barre.MenuItem[j]){
                System.out.println("Commande = " + barre.MenuItem[j].getText());
                }}
            //cc.next(this);
     
        }[/b]
     
        public static void main(String args[]) {
            Fenetre fenetre = new Fenetre();
     
            fenetre.pack();
            fenetre.setVisible(true);
        }
     
    }
    Le probleme vient du passage de paramètres entre ma classe BarreDeMenu et Fenetre. Il doit y a voir une référence à un objet qui se perd. En gras, les éléments qui devraient vous interresser pour me répondre.

  2. #2
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 23
    Par défaut
    Error : java.lang.NullPointerException null

    public void actionPerformed(ActionEvent evt){
    Object source = evt.getSource();
    frame.MiseAJour(source);
    }


    L'erreur est ici. Je ne vois absolument pas où est mon erreur.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Par défaut
    Bonjour,

    Cela ne va peut-être pas résoudre le problème, mais il me semble qu'il y a qqc de bizarre dans Fenetre : tu as deux "barre" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    BarreDeMenu barre; 
    // [...]
    [b]BarreDeMenu barre = new BarreDeMenu(this);[/b]
    Nicolas

  4. #4
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    je pense que Nicolas_75 a vu juste, en effet, la classe Fenetre possede un membre "barre" de type "BarreDeMenu" et tu defini une nouvelle variable "barre" dans le constructeur de Fenetre, cette nouvelle variable masque l'autre.
    remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BarreDeMenu barre = new BarreDeMenu(this);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.barre = new BarreDeMenu(this);
    deplus il est recommandé de rajouter "this." chaque fois que tu utilise un membre de la classe.
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 23
    Par défaut
    J'ai corrigé ces erreurs.

    Il y avait un autre problème au niveau du CardLayout cc qui n'était pas appliqué au bon conteneur. (De toute façon, il était en commentaire dans mon listing).

    Il me semble avoir corrigé d'autres éléments mais je ne m'en souvien plus.

    Mon problème est résolu. Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Héritage d'évènement javascript
    Par V1ce37 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 12/03/2015, 20h48
  2. Héritage et événements
    Par CyBeRoN dans le forum VB.NET
    Réponses: 1
    Dernier message: 29/04/2010, 15h36
  3. Héritage d'événements event EventHandler
    Par stephane.julien dans le forum C#
    Réponses: 15
    Dernier message: 06/06/2008, 13h10
  4. Héritage d'un événement pour une classe fille
    Par korntex5 dans le forum Langage
    Réponses: 4
    Dernier message: 11/01/2006, 16h48
  5. Redéfinir l'événement OnExit de mon composant TEditFloat
    Par Seb des Monts dans le forum C++Builder
    Réponses: 5
    Dernier message: 18/06/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo