Debug exercice livre Delannoy ExMenuAc
Hello,
ça à l'air tout bete :oops: 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:
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:
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:
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:
1 2 3 4 5 6
| public class ExMenuAc
{ public static void main (String args[])
{ FenMenu100 fen = new FenMenu100() ;
fen.setVisible(true) ;
}
} |