2011-07-06 26 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());