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)