2011-07-06 50 views
11

我正在嘗試點擊代碼中的按鈕。我正在做以下事情:org.eclipse.swt.widgets.Button點擊代碼

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

現在我想從代碼運行mouseDown方法可以告訴我該怎麼做嗎?

謝謝。

回答

15

你可以這樣做:

button.notifyListeners(SWT.MouseDown, null); 

nullEvent。請記住,這是您的聽衆收到的Event

+0

非常感謝你爲我節省了很多時間!!!!!! –

+1

這並不完全正確,因爲它沒有完全模擬按鈕按下。我明白,這不是你要求的,但是,上面的代碼只給你一個'MouseDown',但沒有'MouseUp','Selection','MouseEnter','FocusIn'等等...... –

+0

知道,但是因爲他想「從代碼中運行mouseDown方法」,所以這個技巧就是了。 :O) –

0

不確定它是否是您正在尋找的解決方案,但爲什麼不保留MyMouseAdapter實例的局部變量並直接調用它的mouseDown方法? 類似下面的代碼片段:

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

我想借此從按鈕適配器 –

+0

您可以直接檢索從按鈕,但我認爲馬里奧的解決方案將符合您的需求 – greydet

0

我的回答是基本上模擬鼠標點擊事件。有很多例子,所以如果我的鏈接不適合你,請快速搜索。答案取決於你正在導入的庫。

您可以使用java.awt.Robot來模擬程序按鈕按下,如下面的鏈接。
http://www.java2s.com/Code/JavaAPI/java.awt/RobotmousePressintbuttons.htm

或者你如果你正在使用SWT,你可以在下面使用Display.post(事件e),如: http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/UIAutomationfortestingtoolssnippetpostmouseevents.htm

這些途徑需要座標爲點擊事件中提供,並可能對被點擊的對象的引用,所以它會要求所述對象找到控件(在這個例子中是你試圖點擊的按鈕),以便它可以被點擊。

如果你正在使用swing,只需要做button.doClick()。

1

要從鼠標按鈕上獲得正確的行爲,您需要使用Display.post(...)來模擬MouseDownMouseUp - 沒有其他方法可以獲得正確的架構相關行爲。

你可以找到大量的代碼 - 包括Testing a Plug-in - User Interface Testing

修訂鏈接

2

如果您需要通知所有偵聽器,那麼你可以試試下面的代碼,

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