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(...)
模拟MouseDown
和MouseUp
– 没有其他方法可以获得正确的体系结构相关行为。
您可以找到大量代码 – 包括测试插件 – 用户界面测试 。
更新链接
不确定它是否是您正在寻找的解决方案,但为什么不保留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()。