GWT - 扩展Composite而不是Widget

时间:2011-03-31 11:26:28

标签: gwt button widget composite

我开始使用GWT并构建自己的Button。我读到了最佳实践,我应该扩展Composite而不是Widget。但为什么?在Stackoverflow上我读到GWT Widgets对某些浏览器有特殊行为,但是当我扩展Widget时行为没有丢失,是吗?关键是,我想要一个Button,只是另一种风格。因为我不止一次需要它,所以我不想一直重复代码。但是,如果我扩展Composite,我必须提供像Button这样的方法来处理像setClickHandler(...)这样的东西。这看起来很像开销。

2 个答案:

答案 0 :(得分:4)

使用Composite想要创建复杂的小部件。 Composite类允许您在窗口小部件中使用其他现有窗口小部件。

对于您的情况,只是子类Button小部件,因为您不希望为按钮添加复杂性。

答案 1 :(得分:1)

不需要延长复合或按钮(更糟糕), 您可以创建不扩展其他类(Button ..)的类,如下所示:

public class MyButton {
  Button btn= new button("btn");
  VerticalPanel vpanel= new VerticalPane();/* or HorizontalPanel ..*/
   /* add whatever you need */
 public MyButton(){
   /* add style to button and or to vpanel use btn.setStyleName("style-name") */
   vpanel.add(btn)
}
public Button getButton(){ return btn; }/* it allows you get button to add ClickHandlers..*/
public Widget asWidget() { return vpanel; } /* Widget because mybe you ll need HozonalPanel */
/* you can add more features: ... */