Je fais bien un _groupeB.addMousseListener(this) dans le constructeur (j'ai voulu limiter le code pour cibler l'essentiel mais faut croire que j'ai eu tord...). Dans moussePressed(), je fais un appel à une methode de MyButton (appelé moussePressed aussi) qui change l'image et appelle repaint().
J'ai mis un exemple qui montre le pb (il faut 2 gifs).
Merci.
Eric
Herve AGNOUX wrote:
[EMAIL PROTECTED]">Le Jeudi 14 Novembre 2002 18:24, Eric MOREL a écrit :Bonjour,
J'ai du mal à comprendre ce qui se passe avec le code suivant (jdk 1.1.8).
Sur la foi de ce que tu nous présentes... Rien !
En effet, ta frame serait également un MouseListener, mais à aucun moment tu
ne l'enregistres auprès d'emetteur d'événement souris. Donc il ne se passe
rien.
D'une façon générale, il vaut mieux utiliser le package swing pour faire les
IHM, même avec java 1.1.8. Cette règle n'a qu'une exception, c'est lorsque tu
veux faire des applets
[EMAIL PROTECTED]">public class Repertoire extends Frame implements MouseListener {
private static final PopupMenu _groupePU = new PopupMenu();
private static final MyButton _groupeB = new MyButton("nomImage");
....
//si j'appuie sur le bouton _groupeB
public void mousePressed(MouseEvent e) {
_groupeB.mousePressed(); // => (appel à repaint() avec une autre image)
Normalement tu n'as jamais à appeler directement des méthodes style
mousePressed. C'est le composant auquel le listener est enregistré qui
l'appellera.
Ici je soupçonne que tu te mélanges les pédales.
Si tu veux que un clic souris sur "_groupeB" provoque un appel au repaint :
- depuis le constructeur (par exemple) de ta Frame :
addMouseListener(this);
- puis, dans mousePressed :
public void mousePressed(...)
{
...
repaint();
...
}
Va voir la gestion des événements dans le tutoriel java (URL perdue :-().
A+.
************************************************************************************************** The contents of this email and any attachments are confidential. It is intended for the named recipient(s) only. If you have received this email in error please notify the system manager or the sender immediately and do not disclose the contents to any one or make copies.
** Antivirus scanned this email for viruses, vandals and malicious content ** **************************************************************************************************
package essai;
import java.awt.*;
import java.awt.event.*;
/**
*
*/
class MyButton extends Canvas
{
public static final int NORMAL=0;
public static final int ACTION=1;
private static final String _imageNormalExt="_n";
private static final String _imageActionExt="_a";
private static final String _typeImageExt=".gif";
final private MediaTracker _mediaTracker = new MediaTracker(this);
/**
* The current image for the button (this is always one of
* upImage or downImage).
*/
private Image _image = null;
private Image _imageNormal = null;
private Image _imageAction = null;
/**
* Etat du bouton
*/
private int _etat;
public int getEtat()
{
return _etat;
}
public MyButton(String _nomImage)
{
this(_nomImage, NORMAL);
}
public MyButton(String nomImage, int etat)
{
_etat = etat;
_imageNormal=getToolkit().getImage("C:\\" + nomImage + _imageNormalExt + _typeImageExt);
_imageAction=getToolkit().getImage("C:\\" + nomImage + _imageActionExt + _typeImageExt);
_mediaTracker.addImage(_imageNormal, 0);
_mediaTracker.addImage(_imageAction, 1);
try
{
_mediaTracker.waitForAll();
}
catch (InterruptedException ie)
{
System.err.println(ie);
}
if (etat == ACTION)
{
_image = _imageAction;
}
else
{
_image = _imageNormal;
}
}
public void paint(Graphics g)
{
g.drawImage(_image, 0, 0, this);
}
public void mouseClicked(MouseEvent e) {};
public void mousePressed()
{
_image=_imageAction;
_etat=ACTION;
repaint();
}
public void mouseReleased()
{
_image=_imageNormal;
_etat=NORMAL;
repaint();
}
public void mouseEntered(){
_image=_imageAction;
_etat=ACTION;
repaint();
}
public void mouseExited()
{
_image=_imageNormal;
_etat=NORMAL;
repaint();
}
}
package essai;
import java.awt.*;
import java.awt.event.*;
/**
* <p>Titre : Nom de votre produit</p>
* <p>Description : Votre description</p>
* <p>Copyright : Copyright (c) 1999</p>
* <p>Soci�t� : Votre soci�t�</p>
* @author Votre nom
* @version
*/
public class Repertoire extends Frame implements MouseListener
{
private Image _imageFond;
//j'ai normalement plein d'objets MyButton avec des actions diff�rentes.
private static final MyButton _groupeB = new MyButton("ong_tous");
private static final MenuItem _nouveauMI = new MenuItem();
private static final PopupMenu _groupePU = new PopupMenu();
private Repertoire()
{
jbInit();
this.setVisible(true);
}
/**
* Initialisation des objets de l'IHM
*/
private final void jbInit()
{
this.setLayout(null);
this.setTitle("R�pertoire");
this.setSize(new Dimension(240, 295));
this.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(WindowEvent e) {
this_windowClosing(e);
}
});
_groupeB.setBounds(58, 25, 47, 22);
_groupeB.addMouseListener(this);
_nouveauMI.setLabel("Nouveau");
_groupePU.add(_nouveauMI);
this.add(_groupeB, null);
this.add(_groupePU);
}
public void this_windowClosing(WindowEvent e) {
System.exit(0);
}
public void mousePressed(MouseEvent e)
{
_groupeB.mousePressed();
// _groupePU.show(_groupeB,e.getX(),e.getY());
}
public void mouseReleased(MouseEvent e)
{
// MyButton object = (MyButton) e.getSource();
_groupeB.mouseReleased();
}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e)
{
// _groupeB.mouseEntered();
}
public void mouseExited(MouseEvent e)
{
// _groupeB.mouseExited();
}
public static void main(String[] args) {
Repertoire repertoire = new Repertoire();
}
}
