MENU / ActionListener et texte qui ne s'affiche pas
Bonjour,
Mon code consiste à afficher une barre de menu, avec deux menus : fichier(items : nouveau, ouvrir, fermer) et edit.
Je ne m'intéresse pour l'instant au'aux Items nouveau ouvrir et fermer de façon à ce que mon code affiche certains textes dès que l'un de ces Items est sélectionné..
Pas de soucis avec l'affichage de menus mais aucun de mes textes ne s'affiche..
Mon énoncé exige que le code soit écrit dans une seule classe :
----> Mon code :
Code:
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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
|
import java.awt.*;
import java.awt.Event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class DemoMenuCopy2 extends Frame implements ActionListener {
String texte;
//creation des composants
//creation d'une barre de menu
MenuBar mBar=new MenuBar();
//creation d un menu file
Menu file=new Menu("Fichier");
//Creation des item du menu file
MenuItem nouveau =new MenuItem ("Nouveau");
MenuItem ouvrir =new MenuItem ("Ouvrir");
MenuItem fermer =new MenuItem ("Fermer");
MenuItem separerFile =new MenuItem ("-");
MenuItem quitter =new MenuItem ("Quitter");
//creation d un menu edit et ces items
Menu edit =new Menu ("Edit");
MenuItem copier =new MenuItem ("Copier");
MenuItem couper =new MenuItem ("Couper");
MenuItem coller =new MenuItem ("Coller");
MenuItem separerEdit =new MenuItem ("-");
//creation du menu special
Menu special =new Menu ("Special");
MenuItem premier =new MenuItem ("Premier");
MenuItem deuxieme =new MenuItem ("Deuxieme");
MenuItem troisieme =new MenuItem ("Troisieme");
//constructeur
DemoMenuCopy2(String Menuu)
{
super(Menuu);
//ajouter la barre de menu
setMenuBar(mBar);
//ajouter le menu file a la barre de menu ainsi que ses items
file.add(nouveau);
file.add(ouvrir);
file.add(fermer);
file.add(separerFile);
file.add(quitter);
mBar.add(file);
nouveau.addActionListener(this);
ouvrir.addActionListener(this);
fermer.addActionListener(this);
//ajouter le menu edit a la barre de menu ainsi que ses items
// ajouts de qlq items
edit.add(copier);
edit.add(couper);
edit.add(coller);
edit.add(separerEdit);
// menu emboité special
special.add(premier);
special.add(deuxieme);
special.add(troisieme);
//l ajouter a edit
edit.add(special);
// ajouter d autres items et ajouter edit a la barre de menu
edit.add(new CheckboxMenuItem("Debug"));
edit.add(new CheckboxMenuItem("Testing"));
mBar.add(edit);
}
public void actionPerformed(ActionEvent ev){
Object SEV=ev.getSource();
if(SEV==nouveau){
texte="Créer un nouveau fichier";
}
if(SEV==ouvrir){
texte="Ouverure d'un fichier";
}
if(SEV==fermer){
texte="Fermeture du fichier";
}
repaint();
}
public void paint(Graphics g){
g.drawString(texte,150,50);
}
//instanciation, taille de la fenetre, lisibilité et affichage du texte
public static void main(String[] args)
{
DemoMenuCopy2 monmenu=new DemoMenuCopy2("Menu");
monmenu.setSize(600,220);
monmenu.setVisible(true);
}
} |
et je reçois ça :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: String is null
at sun.java2d.SunGraphics2D.drawString(Unknown Source)
at DemoMenuCopy2.paint(DemoMenuCopy2.java:105)
at sun.awt.RepaintArea.paintComponent(Unknown Source)
at sun.awt.RepaintArea.paint(Unknown Source)
at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
at sun.awt.windows.WWindowPeer.handleEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source) |
et même quand je sépare le code en deux classes rien ne s'affiche :
Code:
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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
|
import java.awt.CheckboxMenuItem;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
public class DemoMenuCopy extends Frame {
//creation des composants
//creation d'une barre de menu
MenuBar mBar=new MenuBar();
//creation d un menu file
Menu file=new Menu("Fichier");
//Creation des item du menu file
MenuItem nouveau =new MenuItem ("Nouveau");
MenuItem ouvrir =new MenuItem ("Ouvrir");
MenuItem fermer =new MenuItem ("Fermer");
MenuItem separerFile =new MenuItem ("-");
MenuItem quitter =new MenuItem ("Quitter");
//creation d un menu edit
Menu edit =new Menu ("Edit");
MenuItem copier =new MenuItem ("Copier");
MenuItem couper =new MenuItem ("Couper");
MenuItem coller =new MenuItem ("Coller");
MenuItem separerEdit =new MenuItem ("-");
//creation du menu special
Menu special =new Menu ("Special");
MenuItem premier =new MenuItem ("Premier");
MenuItem deuxieme =new MenuItem ("Deuxieme");
MenuItem troisieme =new MenuItem ("Troisieme");
//constructeur
DemoMenuCopy(String Menuu)
{
super(Menuu);
//ajouter la barre de menu
setMenuBar(mBar);
//ajouter le menu file a la barre de menu ainsi que ses items
file.add(nouveau);
file.add(ouvrir);
file.add(fermer);
file.add(separerFile);
file.add(quitter);
mBar.add(file);
//ajouter le menu edit a la barre de menu ainsi que ses items
// ajouts de qlq items
edit.add(copier);
edit.add(couper);
edit.add(coller);
edit.add(separerEdit);
// menu emboité special
special.add(premier);
special.add(deuxieme);
special.add(troisieme);
//l ajouter a edit
edit.add(special);
// ajouter d autres items et ajouter edit a la barre de menu
edit.add(new CheckboxMenuItem("Debug"));
edit.add(new CheckboxMenuItem("Testing"));
mBar.add(edit);
// attribuer les ecouteurs
Detection detection=new Detection(this);
nouveau.addActionListener(detection);
ouvrir.addActionListener(detection);
fermer.addActionListener(detection);
detection.getGraphics();
paint(detection.getGraphics());
}
//instanciation, taille de lafenetre et lisibilité et affichage du texte
public static void main(String[] args)
{
DemoMenuCopy monmenu=new DemoMenuCopy("Menu");
monmenu.setSize(600,220);
monmenu.setVisible(true);
}
} |
Code:
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
|
import java.awt.*;
import java.awt.event.*;
public class Detection extends Frame implements ActionListener{
String texte;
DemoMenuCopy monmenu;
//constructeur
Detection(DemoMenuCopy monmenu){
super();
this.monmenu=monmenu;
}
public void actionPerformed(ActionEvent ev){
Object SEV=ev.getSource();
if(SEV==monmenu.nouveau){
texte="Créer un nouveau fichier";
}
else if(SEV==monmenu.ouvrir){
texte="Ouverure d'un fichier";
}
else if(SEV==monmenu.fermer){
texte="Fermeture du fichier";
}
repaint();
}
public void paint(Graphics g){
g.drawString(texte,150,50);
}
} |
J'arrive pas à trouver mon erreur merci de bien vouloir m'aider :)