GWT - расширение Composite вместо Widget - PullRequest
1 голос
/ 31 марта 2011

Я начинаю работать с GWT и создаю свою собственную кнопку. Я читал о лучших практиках и что я должен расширить Composite вместо Widget. Но почему? Здесь, в Stackoverflow, я читал, что виджеты GWT имеют специальное поведение для некоторых браузеров, но когда я расширяю виджет, это поведение не теряется, не так ли? Дело в том, что я хочу кнопку, просто с другим стилем. И поскольку мне это нужно не раз, я не хочу повторять код все время. Но если я расширяю Composite, я должен предложить те же методы, что и Button, для передачи таких вещей, как setClickHandler (...). Это выглядит много накладных расходов.

Ответы [ 2 ]

4 голосов
/ 31 марта 2011

С помощью Composite вы хотите создать сложный виджет. Класс Composite позволяет вам использовать другие существующие виджеты внутри вашего виджета.

В вашем случае просто создайте подкласс виджета Button, потому что вы не хотите добавлять сложности к кнопке.

1 голос
/ 15 февраля 2014

Расширение Composite или Button (хуже) не обязательно, Вы можете создать класс, который не расширяет другой класс (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: ... */
...