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方法你能告诉我怎么做吗?

谢谢。

你可以这样做:

 button.notifyListeners( SWT.MouseDown, null ); 

其中null是一个Event 。 请记住,这是听众收到的Event

如果您需要通知所有听众,那么您可以尝试以下代码,

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

要通过鼠标按下按钮获得正确的行为,您需要使用Display.post(...)模拟MouseDownMouseUp – 没有其他方法可以获得正确的体系结构相关行为。

您可以找到大量代码 – 包括测试插件 – 用户界面测试 。

更新链接

不确定它是否是您正在寻找的解决方案,但为什么不保留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); 

我的答案是基本上模拟鼠标点击事件。 有很多例子,所以如果我的链接不起作用你做快速搜索。 答案取决于您导入的库。

您可以使用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

这些路径中的任何一个都需要为click事件提供坐标,并且可能是对被点击对象的引用,因此需要所述对象找到控件(在本例中是您尝试单击的按钮),以便可以单击它。

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