Передача статического метода в фабрику кнопок (Java) - PullRequest
0 голосов
/ 05 октября 2018

Я кодирую небольшой плагин для Eclipse (использующий SWT), который создает вид с помощью пары кнопок.Чтобы не создавать избыточный код, я хочу создать какой-то фабричный метод для создания моих кнопок.Вызов будет выглядеть примерно так:

Button button0 = createButton(new Button(parent, SWT.PUSH), "Test DB zurücksetzen", btnHight, btnWidth, new FormAttachment(0, 2), new FormAttachment(0,2));

Моя фабрика до сих пор выглядит следующим образом:

private Button createButton(Button buttonToCreate, String buttonText, int height, int width, FormAttachment left, FormAttachment top) {

    buttonToCreate.setText(buttonText);
    FormData formData = new FormData();
    formData.height = height;
    formData.width = width;
    formData.left = left;
    formData.top = top;
    buttonToCreate.setLayoutData(formData);

    buttonToCreate.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            Actions.editPropertys(); 
        }
    });

    return buttonToCreate;

}

Мой вопрос: Как я могу передать метод класса действия Iхотите выполнить на заводе в качестве параметра?

1 Ответ

0 голосов
/ 05 октября 2018

Вы можете передать его как Runnable параметр метода.

Например:

private Button createButton(Button buttonToCreate, String buttonText, int height, int width, FormAttachment left, FormAttachment top, Runnable actionOnSelection) {

  // ...
    buttonToCreate.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            actionOnSelection.run(); // change here
        }
    });
}

и вызвать его:

Button button0 = createButton(new Button(parent, SWT.PUSH), "Test DB zurücksetzen", btnHight, btnWidth, new FormAttachment(0, 2), new FormAttachment(0,2), 
                Actions::editPropertys); // other change here
...