J'ai attaché un écouteur à Shell sur les événements SWT.MouseUp et SWT.MouseDown, mais la méthode handleEvent n'est jamais déclenchée. J'ai essayé de cliquer à plusieurs endroits sur la fenêtre, mais il ne parvient même pas à System.out.println (..) dans le code ci-dessous ...L'ajout d'un écouteur à l'environnement Shell pour SWT.MouseUp ne fonctionne pas
Y at-il une erreur ici?
Merci!
//c is a Composite.
final Listener l = new Listener(){
public void handleEvent(Event event) {
System.out.println("Got event. "+event);
Rectangle rect = c.getBounds();
if (rect.contains(event.x, event.y)){
if((Boolean)c.getData("selected")){
c.setData("selected", Boolean.FALSE);
}else{
c.setData("selected", Boolean.TRUE);
}
}
}
};
c.getShell().addListener(SWT.MouseUp, l);
c.getShell().addListener(SWT.MouseDown, l);
(Ce composite est à l'intérieur d'un éditeur Eclipse qui utilise la boîte à outils Forms)
Cordialement,
-Pradyumna
Merci. J'ai maintenant l'idée ... mais y a-t-il un moyen de connecter un écouteur à un composite qui se déclenche quand l'événement (tel que MouseDown) se produit sur n'importe quel descendant de ce composite? – Pradyumna
Vous pouvez itérer à travers le 'getChildren()' d'un composite et ajouter les écouteurs à chacun. –
Quelque chose de digne d'être mentionné pourrait être 'Display.addFilter (.)': Vous êtes informé de tout événement dans la boucle d'événements de l'affichage. Ce n'est pas exactement ce que vous demandez, et dans la plupart des cas, ce n'est pas la bonne façon de faire les choses, mais dans de rares occasions, c'est très utile. –