org.eclipse.swt.widgets.Button从代码中单击

时间:2011-07-06 11:30:54

标签: java swt

我正在尝试从代码中单击按钮。我想要做以下事情:

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

现在我想从代码中运行mouseDown方法你能告诉我该怎么做吗?

谢谢。

5 个答案:

答案 0 :(得分:14)

你可以这样做:

button.notifyListeners( SWT.MouseDown, null );

nullEvent的位置。请记住,这是听众收到的Event

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

要通过鼠标按下按钮获得正确的行为,您需要使用MouseDown模拟MouseUpDisplay.post(...) - 没有其他方法可以获得正确的架构依赖行为。

您可以找到大量代码 - 包括Testing a Plug-in - User Interface Testing

更新链接

答案 3 :(得分: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);

答案 4 :(得分: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

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

如果您正在使用swing,请执行button.doClick()。