【问题标题】:How to create buttons with actions in Vaadin如何在 Vaadin 中创建带有动作的按钮
【发布时间】:2015-02-05 09:36:44
【问题描述】:

我正在开发一个 Vaadin 应用程序。在开发 Java 桌面应用程序时,我使用 AbstractAction 创建 GUI 的按钮。如何使用 Vaadin 做到这一点

这是我在 Java 桌面应用程序中的做法:

// In my  view
JButton button = new JButton(new Action(BUTTON_NAME, presenter, "methodToInvoke", Object... arguments));

class Action extends AbstractAction {

    public Action(ButtonName name, Presenter presenter, String method, Object... arguments) {
        this.name = name;
        this.presenter = presenter;
        this.method = method;
        this.arguments = arguments;
        readButtonProperties();
    }

    public void actionPerformed(ActionEvent e) {
         //Call method from presenter with arguments using reflection
    }
}

编辑:

我已经读过this。这不是我要求的方式。

【问题讨论】:

标签: java button vaadin


【解决方案1】:

从您的示例中,您的要求并不清楚。 听起来你坚持使用反射,但我不知道为什么。你可以这样做,这与 Button 文档已经说过的基本相同。

    Presenter presenter = getPresenter();
    String with = "with";
    int my = 42;
    List<Data> = new List<>();
    Button vaadinButton = new Button("I'm a button.", clickEvent -> presenter.doStuff(with, my, arguments));

如果您需要的不仅仅是一个简单的方法调用,您还可以创建一个比 buttonClick() 方法更多的更精细的 ClickListener 实现。

Button vaadinButton = new Button("Button Caption", new Action(...))


class Action extends AbstractAction implements Button.ClickListener {
    public Action(ButtonName name, Presenter presenter, String method, Object... arguments) {
        this.name = name;
        this.presenter = presenter;
        this.method = method;
        this.arguments = arguments;
        readButtonProperties();
    }

    public void actionPerformed(ActionEvent e) {
         //Call method from presenter with arguments using reflection
    }

    @Override
    public void buttonClick(ClickEvent event) {
        actionPerformed(null);
    }
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-09-22
  • 2019-11-11
  • 1970-01-01
  • 2019-05-26
  • 1970-01-01
  • 2014-02-14
  • 1970-01-01
  • 2023-04-04
相关资源
最近更新 更多