我正在尝试在vaadin 7中创建一个CustomComponent。该组件的VerticalLayout方法中设置了setCompositionRoot(),并且在该VerticalLayout中设置了一些Labels和其他布局。在主视图类中实现我的自定义组件,我希望能够处理对我的自定义组件的单击,这意味着将VerticalLayout作为组合根元素:

MyCustomComponent component = new MyCustomComponent();
component.addOnClickListener(listener);

但是没有像addOnClickListener这样的方法可用。如何实现该功能?我知道我可以在自定义组件中处理带有LayoutClickListener的布局单击,但是还有一种方法可以设置声明组件的侦听器,例如在主视图类中(类似于上面的代码片段)?

最佳答案

创建一个名为addOnClickListener的自己的方法,该方法将LayoutClickListener作为参数。在addOnClickListener的实现内部,您将侦听器添加到布局中。例:

component.addOnClickListener(new LayoutClickListener() {

            @Override
            public void layoutClick(LayoutClickEvent event) {
                // TODO Auto-generated method stub

            }
        });

以及component.addOnClickListener的实现:
public void addOnClickListener(LayoutClickListener listener){
    yourVerticalLayout.addLayoutClickListener(listener);
}

09-27 11:35