Org.eclipse.swt.widgets.Button click from code

Я пытаюсь нажать кнопку "Код" из кода. Я свяжусь, чтобы сделать следующее:

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

теперь я хочу запустить метод mouseDown из кода, не могли бы вы рассказать мне, как это сделать?

Спасибо.

Ответ 1

Вы можете сделать это:

button.notifyListeners( SWT.MouseDown, null );

Где null - Event. Помните, что это Event, полученное вашим слушателем.

Ответ 2

Если вам нужно, чтобы все слушатели были уведомлены, вы можете попробовать приведенный ниже код,

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

Ответ 3

Чтобы получить правильное поведение от нажатия мыши на кнопку, вам нужно смоделировать MouseDown и MouseUp с помощью Display.post(...) - другого способа получить правильное поведение, зависящее от архитектуры, не существует.

Вы можете найти много кода для этого - в том числе Тестирование плагина - Тестирование пользовательского интерфейса.

ОБНОВЛЕНО ссылка

Ответ 4

Не уверен, что это то решение, которое вы ищете, но почему бы не сохранить локальную переменную вашего экземпляра 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);

Ответ 5

Мой ответ заключается в том, чтобы существенно имитировать событие щелчка мыши. Существует множество примеров, поэтому, если мои ссылки не работают, вы быстро выполняете поиск. ответ зависит от импортируемых вами библиотек.

Вы можете использовать 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

Для каждого из этих маршрутов требуются координаты для события щелчка и, возможно, ссылка на объект, на который нажимается, поэтому для этого требуются объекты, находящие элемент управления (в этом случае кнопка, которую вы пытаетесь щелкнуть), чтобы она можно щелкнуть.

Если вы используете качели, просто нажмите кнопку button.doClick().