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

Java org.eclipse.swt.widgets.Button从代码中单击,java,swt,Java,Swt,我正在尝试从代码中单击按钮。我将做以下工作: class MyMouseAdapter extends MouseAdapter { public void mouseDown(MouseEvent evt) { System.out.println("Working!!!!"); } } Button button = new Button(); button.addMouseListener(new MyMouseAdapter()); 现在我想从代

我正在尝试从代码中单击按钮。我将做以下工作:

class MyMouseAdapter extends MouseAdapter
{
    public void mouseDown(MouseEvent evt) 
    {
       System.out.println("Working!!!!");
    }
}
Button button = new Button();
button.addMouseListener(new MyMouseAdapter());
现在我想从代码中运行mouseDown方法,你能告诉我怎么做吗


谢谢。

不确定这是否是您正在寻找的解决方案,但为什么不保留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模拟程序按钮按下,如以下链接所示。

或者,如果您正在使用SWT,您可以使用Display.post(事件e),如下所示:

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

如果您使用的是swing just do button.doClick()。

您可以执行以下操作:

button.notifyListeners( SWT.MouseDown, null );

其中
null
是一个
事件
。请记住,这是您的侦听器接收到的
事件。

要从鼠标按下按钮获得正确的行为,您需要使用
Display.post(…)
模拟
MouseDown
MouseUp
-没有其他方法可以获得正确的体系结构相关行为

你可以找到很多关于这个的代码,包括


更新了链接

如果需要通知所有侦听器,则可以尝试以下代码

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

我想从button获取适配器您可以直接从button检索适配器,但我认为Mario的解决方案将符合您的需要这并不完全正确,因为它不完全模拟按键。我知道这不是你想要的,但是,上面的代码只给你一个
MouseDown
,但是没有
MouseUp
Selection
MouseEnter
FocusIn
,等等……我知道,但因为他想“从代码运行MouseDown方法”,这就成功了o)