Swt + menu + event

Résolu
tristaf Messages postés 3 Date d'inscription lundi 27 juin 2005 Statut Membre Dernière intervention 3 juillet 2005 - 30 juin 2005 à 11:20
tristaf Messages postés 3 Date d'inscription lundi 27 juin 2005 Statut Membre Dernière intervention 3 juillet 2005 - 3 juil. 2005 à 00:36
Bonjour,

dans mon application swt je voudrais pouvoir récupérer la source qui déclenche un évenement de choix de menu ...

Pour être plus clair voici deux code dont le deuxième qui ne marche pas:



import java.io.*;

import org.eclipse.swt.*;

import org.eclipse.swt.widgets.*;

import org.eclipse.swt.events.*;





public class Menutest

{

Menutest()

{

Display display = new Display ();

Shell shell = new Shell (display);

Menu menu = new Menu(shell, SWT.BAR);

shell.setMenuBar(menu);

MenuItem menuentryun = new MenuItem(menu, SWT.CASCADE);

menuentryun.setText("Un");

Menu un = new Menu(shell, SWT.DROP_DOWN);

menuentryun.setMenu(un);

MenuItem uno = new MenuItem(un, SWT.CASCADE);

uno.setText("Uno");

MenuItem one = new MenuItem(un, SWT.PUSH);

one.setText("One");

uno.addListener(SWT.Selection, new Listener(){

public void handleEvent(Event e)

{

System.out.println("Uno");

}

});

one.addListener(SWT.Selection, new Listener(){

public void handleEvent(Event e)

{

System.out.println("One");

}

});





shell.setSize(300,300);

shell.open ();

while (!shell.isDisposed ())

{

if (!display.readAndDispatch ())

display.sleep ();

}

display.dispose ();

}



public static void main(String[] args)

{

Menutest menutest = new Menutest();

}

}


Là pas de pb j'arrive à déclencher une action quand je clique sur un
sous-menu, mais je voudrais avoir une seul fonction qui gère les
evénementt de tous les sous menu ...

Voici un code qui marche pas mais qui montre ce que je recherche:





import java.io.*;

import org.eclipse.swt.*;

import org.eclipse.swt.widgets.*;

import org.eclipse.swt.events.*;





public class Menutest implements Listener

{

MenuItem uno;

MenuItem one;



Menutest()

{

Display display = new Display ();

Shell shell = new Shell (display);

Menu menu = new Menu(shell, SWT.BAR);

shell.setMenuBar(menu);

MenuItem menuentryun = new MenuItem(menu, SWT.CASCADE);

menuentryun.setText("Un");

Menu un = new Menu(shell, SWT.DROP_DOWN);

menuentryun.setMenu(un);

uno = new MenuItem(un, SWT.CASCADE);

uno.setText("Uno");

one = new MenuItem(un, SWT.PUSH);

one.setText("One");

uno.addListener(this);

one.addListener(this);

shell.setSize(300,300);

shell.open ();

while (!shell.isDisposed ())

{

if (!display.readAndDispatch ())

display.sleep ();

}

display.dispose ();

}



public void handleEvent (Event e)

{

if (e. getSource() == uno)

System.out.println("Uno");

if (e. getSource() == one)

System.out.println("One");



}



public static void main(String[] args)

{

Menutest menutest = new Menutest();

}

}



Le pb c'est qu'il ny a pas de méthode getSource associé à mon événement comme en swing. Je cherche donc un équivalent ?

Merci.




__
Frédéric TRISTANI

2 réponses

tristaf Messages postés 3 Date d'inscription lundi 27 juin 2005 Statut Membre Dernière intervention 3 juillet 2005
3 juil. 2005 à 00:33
Bon ben j'ai trouvé:
à la place de la métode 'getSource()' de la class event de swing, il faut utiliser l'attribut 'widget' ...
Ce qui donne pour avoir le code fonctionnel:

import java.io.*;
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.events.*;


public class Menutest implements Listener
{
MenuItem uno;
MenuItem one;

Menutest()
{
Display display = new Display ();
Shell shell = new Shell (display);
Menu menu = new Menu(shell, SWT.BAR);
shell.setMenuBar(menu);
MenuItem menuentryun = new MenuItem(menu, SWT.CASCADE);
menuentryun.setText("Un");
Menu un = new Menu(shell, SWT.DROP_DOWN);
menuentryun.setMenu(un);
uno = new MenuItem(un, SWT.CASCADE);
uno.setText("Uno");
one = new MenuItem(un, SWT.PUSH);
one.setText("One");
uno.addListener(this);
one.addListener(this);
shell.setSize(300,300);
shell.open ();
while (!shell.isDisposed ())
{
if (!display.readAndDispatch ())
display.sleep ();
}
display.dispose ();
}

public void handleEvent (Event e)
{
if (e.widget == uno)
System.out.println("Uno");
if (e.widget == one)
System.out.println("One");

}

public static void main(String[] args)
{
Menutest menutest = new Menutest();
}
}

Voilax.

__
Frédéric TRISTANI
3
tristaf Messages postés 3 Date d'inscription lundi 27 juin 2005 Statut Membre Dernière intervention 3 juillet 2005
3 juil. 2005 à 00:36
Arghh !!!
Bon ben pas de code source dans une réponse apparement ...

__
Frédéric TRISTANI
0
Rejoignez-nous