Hello,

ça à l'air tout bete mais je n'arrive pas à débuger cet exo (ExMenuAc p453-455) du livre de Delannoy 'Programmer en Java' : je n'arrive pas à faire apparaître les icônes de la barre barreCouleurs de type JToolBar..rien y fait. si quelqu'un a une solution ce serait top!
J'ai ajouté ceci et rien y fait:
boutonCourant.setIcon((Icon) actions[i].getValue(Action.SMALL_ICON));
voilà le script, il faut ajouter 4 icones(je les ait mises dans le bin là ou il y a mes classes mais rien y fait..):

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
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
import java.awt.*;
import java.awt.event.* ;
import javax.swing.* ;
import javax.swing.event.* ;
class FenMenu100 extends JFrame implements ActionListener
{ static public final String[] nomCouleurs =
                         {"rouge",    "vert",       "jaune",      "bleu"} ;
  static public final Color[] couleurs =
                         {Color.red,   Color.green, Color.yellow, Color.blue} ;
  static public final String[] nomIcones  =
                         {"images/rouge.gif", "images/vert.gif",  "images/jaune.gif",  "images/bleu.gif"} ;
  public FenMenu100 ()
  { setTitle ("Figures avec Menus et barre d'outils") ;
    setSize (450, 200) ;
    Container contenu = getContentPane() ;
       /* creation paneau pour les dessins */
    pan = new Paneau100() ;
    contenu.add(pan) ;
    pan.setBackground(Color.cyan) ;
 
    int nbCouleurs = nomCouleurs.length ;
       /* creation des actions */
    actions = new ActionCouleur3 [nbCouleurs] ;
    for (int i=0 ; i<nbCouleurs ; i++)
    { actions[i] = new ActionCouleur3 (nomCouleurs[i], couleurs[i],
                                      nomIcones[i], pan) ;
    }
       /* creation barre des menus */
    barreMenus = new JMenuBar() ;
    setJMenuBar(barreMenus) ;
       /* creation menu Couleur et ses options */
    couleur = new JMenu ("Couleur") ; couleur.setMnemonic('C') ;
    barreMenus.add(couleur) ;
    for (int i=0 ; i<nomCouleurs.length ; i++)
      couleur.add(actions[i]) ;
       /* creation menu surgissant Couleur et ses options */
    couleurSurg = new JPopupMenu () ;
    for (int i=0 ; i<nomCouleurs.length ; i++)
      couleurSurg.add(actions[i]) ;
       /* creation menu formes et ses options rectangle et ovale */
    formes = new JMenu ("Formes") ; formes.setMnemonic('F') ;
    barreMenus.add(formes) ;
    rectangle = new JCheckBoxMenuItem ("Rectangle") ;
    formes.add(rectangle) ;
    rectangle.addActionListener (this) ;
    ovale = new JCheckBoxMenuItem ("Ovale") ;
    formes.add(ovale) ;
    ovale.addActionListener (this) ;
       /* affichage menu surgissant sur clic dans fenetre */
    addMouseListener (new MouseAdapter ()
        { public void mouseReleased (MouseEvent e)
          { if (e.isPopupTrigger())
              couleurSurg.show (e.getComponent(), e.getX(), e.getY()) ;
          }
        }) ;
       /* creation menu Dimensions et ses options Hauteur et Largeur */
    dimensions = new JMenu ("Dimensions") ; dimensions.setMnemonic('D') ;
    barreMenus.add(dimensions) ;
    largeur = new JMenuItem ("Largeur") ;
    dimensions.add(largeur) ;
    largeur.addActionListener (this) ;
    hauteur = new JMenuItem ("Hauteur") ;
    dimensions.add(hauteur) ;
    hauteur.addActionListener (this) ;
      /*             creation barre d'outils couleurs                */
      /* (avec suppression textes associes et ajout de bulles d'aide */
    barreCouleurs = new JToolBar () ;
    for (int i=0 ; i<nomCouleurs.length ; i++)
    { JButton boutonCourant = barreCouleurs.add(actions[i]) ;
      boutonCourant.setText(null) ;
      boutonCourant.setToolTipText ((String)actions[i].getValue(Action.SHORT_DESCRIPTION)) ;  
      boutonCourant.setIcon((Icon) actions[i].getValue(Action.SMALL_ICON));
    }
    contenu.add(barreCouleurs, "North") ;
  }
  public void actionPerformed (ActionEvent e)
  { Object source = e.getSource() ;
    if (source == largeur)
    { String ch = JOptionPane.showInputDialog (this, "Largeur") ;
      pan.setLargeur (Integer.parseInt(ch)) ;
    }
    if (source == hauteur)
    { String ch = JOptionPane.showInputDialog (this, "Hauteur") ;
      pan.setHauteur (Integer.parseInt(ch)) ;
    }
    if (source == ovale)     pan.setOvale(ovale.isSelected()) ;
    if (source == rectangle) pan.setRectangle(rectangle.isSelected()) ;
    pan.repaint() ;
  }
  private JMenuBar barreMenus ;
  private JMenu couleur, dimensions, formes ;
  private JMenuItem [] itemCouleurs ;
  private JMenuItem largeur, hauteur ;
  private JCheckBoxMenuItem rectangle, ovale ;
  private JPopupMenu couleurSurg ;
  private ActionCouleur3 [] actions ;
  private JToolBar barreCouleurs ;
  private Paneau100 pan ;
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Paneau100 extends JPanel
{ public void paintComponent(Graphics g)
  { super.paintComponent(g) ;
    if (ovale)     g.drawOval (10, 10, 10+largeur, 10+hauteur) ;
    if (rectangle) g.drawRect (10, 10, 10+largeur, 10+hauteur) ;
  }
  public void setRectangle(boolean trace) {rectangle = trace ; }
  public void setOvale(boolean trace)     {ovale = trace ;  }
  public void setLargeur (int l) { largeur = l ; }
  public void setHauteur (int h) { hauteur = h ; }
  public void setCouleur (Color c) { setBackground (c) ; }
  private boolean rectangle = false, ovale = false ;
  private int largeur=50, hauteur=50 ;
}
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
class ActionCouleur3 extends AbstractAction
{ public ActionCouleur3 (String nom, Color couleur, String nomIcone, Paneau100 pan)
  { putValue (Action.NAME, nom) ;
    putValue (Action.SMALL_ICON, new ImageIcon(nomIcone) ) ;
    putValue (Action.SHORT_DESCRIPTION, "Fond "+nom) ;
    this.couleur = couleur ;
    this.pan = pan ;
  }
  public void actionPerformed (ActionEvent e)
  { pan.setCouleur (couleur) ;
    pan.repaint() ;
    setEnabled(false) ;
    if (actionInactive != null) actionInactive.setEnabled(true) ;
    actionInactive = this ;
  }
  private Color couleur ;
  private Paneau100 pan ;
  static ActionCouleur3 actionInactive ;   // ne pas oublier static
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
public class ExMenuAc
{ public static void main (String args[])
  { FenMenu100 fen = new FenMenu100() ;
    fen.setVisible(true) ;
  }
}