darklord22 Nightwish rulezzzzzzzzzzzzz | radeontof a écrit a écrit :
Salut,
(cette applet est juste un p'tit exercice pour m'entrainer au JAVA)
Mon applet s'appelle Menu et incorpore plusieurs composants Lien que j'ai créé.
Je veux que chaque Lien change de texte au passage de la souris.
Ca parait simple et ca marche si je définis les evenements dans mon applet . Par ex : lien1_mousemove....
Mais vu que chaque lien réagira pareil je veux définir l'événement dans Lien et non dans l'applet.
Mais la ca ne marche pas, g essayé plusieurs tentatives sans succés.
J'ai l'impression qu'il ne prend pas en compte les evenements de mes Liens.
Voici mes sources :
Pour lien :
public class Lien extends Component{
String afftexte;
String texte;
String texte2;
Color couleur;
public Lien(){
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
public Dimension getPreferredSize() {
return new Dimension(30, 30);
}
public Lien(String stexte,String stexte2,Color c){
texte=stexte;
texte2=stexte2;
afftexte=texte;
couleur=c;
}
public void update(Graphics g){
paint(g);
}
public void paint(Graphics g){
g.setColor(couleur) ;
g.drawString(afftexte,0,10) ;
super.paint(g);
}
private void jbInit() throws Exception {
}
//gestion de MOUSEMOVE QUI NE FONCTIONNE PAS
public boolean mouseMove(Event e,int x,int y)
{ afftexte=texte2;
repaint();
return true;
}
}
----------------
Voici Menu:
public class Menu extends JApplet implements Runnable {
boolean isStandalone = false;
Thread lanceur;
Graphics ecran,ong;
Image temp;
Lien lien2 = new Lien("Gnou","GNOU2",new Color(0,255,0));
Lien lien1 = new Lien("salut","Bonjour",new Color(255,0,0));
XYLayout xYLayout1 = new XYLayout();
public void run(){
while (true)
{
repaint();
try {Thread.sleep(50);}
catch (InterruptedException e) {showStatus("Error " + e);}
}
}
//Construire l'applet
public Menu() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Initialiser l'applet
public void init() {
try {
this.getContentPane().add(lien1,new XYConstraints(1,1,-1,-1));
this.getContentPane().add(lien2,new XYConstraints(10,10,-1,-1));
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
this.getContentPane().setLayout(xYLayout1);
}
//Démarrer l'applet
public void start() {
if (lanceur == null); {
lanceur = new Thread(this);
lanceur.start();
}
}
//Arrêter l'applet
public void stop() {
if (lanceur !=null){
lanceur.stop();
lanceur = null;
}
}
}
Si quelqu'un a une idée...
Merci d'avance!
|
Lorsque tu as un MouseEvent qui est génére tu entres dans la méthode MouseEvent machin chose (je me souviens plus du nom). Une fois dans cette méthode tu peux récupérer la source, i.e. l'objet qui a généré l'event (ici c'est un composant). Donc en récupérant l'objet source, tu peux savoir quel composant est lié à l'évenement et changer l'aspect de ton applet.
N'oublie pas d'ajouter chaque composant au listener avant ...
A+ ---------------
What is popular is not always right, what is right is not always popular :D
|