2011-07-06 9 views
11

Estoy intentando hacer clic en el botón del código. Estoy atando a hacer lo siguiente:org.eclipse.swt.widgets.Button haz clic en el código

class MyMouseAdapter extends MouseAdapter 
{ 
    public void mouseDown(MouseEvent evt) 
    { 
     System.out.println("Working!!!!"); 
    } 
} 
Button button = new Button(); 
button.addMouseListener(new MyMouseAdapter()); 

ahora quiero ejecutar el método mouseDown de código que podría decirme cómo hacerlo?

Gracias.

Respuesta

15

Usted puede hacer esto:

button.notifyListeners(SWT.MouseDown, null); 

Dónde null es un Event. Recuerde que este es el Event recibido por su oyente.

+0

Muchas gracias, esto me ha ahorrado mucho tiempo !!!!!! –

+1

Esto no es del todo correcto ya que no emula completamente una pulsación de botón. Entiendo que esto no es lo que estás pidiendo, pero el código anterior solo te da un 'MouseDown', pero no' MouseUp', 'Selection',' MouseEnter', 'FocusIn', etc ... –

+0

I lo sé, pero como quería "ejecutar el método MouseDown desde el código", eso fue lo que hizo. : o) –

0

No estoy seguro de si es el tipo de solución que está buscando, pero ¿por qué no mantener una variable local de su instancia MyMouseAdapter y llamar directamente al método mouseDown? Algo así como el siguiente fragmento:

class MyMouseAdapter extends MouseAdapter 
{ 
    public void mouseDown(MouseEvent evt) 
    { 
     System.out.println("Working!!!!"); 
    } 
} 
MyMouseAdapter adapter = new MyMouseAdapter(); 
Button button = new Button(); 
button.addMouseListener(adapter); 

//Somehow create a new MouseEvent then call the following: 
adapter.mouseDown(yourNewEvent); 
+0

quiero tomar el adaptador del botón –

+0

Puede recuperar directamente desde el botón, pero creo que la solución de Mario coincidirá con sus necesidades – greydet

0

Mi respuesta es esencialmente para simular el evento click del ratón. Hay muchos ejemplos, así que si mis enlaces no funcionan, haga una búsqueda rápida. la respuesta depende de las bibliotecas que está importando.

Puede usar java.awt.Robot para simular un botón de programa presionar como en el siguiente enlace.
http://www.java2s.com/Code/JavaAPI/java.awt/RobotmousePressintbuttons.htm

O bien, si está utilizando SWT podría utilizar Display.post (e Evento) como en lo siguiente: http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/UIAutomationfortestingtoolssnippetpostmouseevents.htm

Cualquiera de estas rutas requieren coordenadas que deben suministrarse para el evento click y potencialmente una referencia al objeto al que se hace clic, por lo que requeriría que dichos objetos encuentren el control (en este caso, el botón que está intentando hacer clic) para poder hacer clic en él.

Si está utilizando columpio simplemente haga clic en button.doClick().

1

Para obtener el comportamiento correcto de una prensa de ratón sobre un botón, es necesario simular el MouseDown y MouseUp usando Display.post(...) - no hay otra manera de conseguir el comportamiento dependiente de la arquitectura correcta.

Puede encontrar muchos códigos para esto, incluido Testing a Plug-in - User Interface Testing.

ACTUALIZADO el enlace

2

Si necesita todos los oyentes que se le notifique a continuación, puede probar el código de abajo,

yourbutton.notifyListeners(SWT.Selection, new Event()); 
Cuestiones relacionadas