2013-03-12 3 views
0

Я выполнил инструкции по этому сообщению ImageButton in gwt , чтобы создать свою собственную закругленную кнопку, и она выглядит как ок. Теперь я хочу добавить обработчики кликов для этого нового класса. Как я могу это сделать? Нужен ли мне обработчик кликов для обоих изображений и ярлык? Что мне делать, чтобы настроить этот компонент с помощью CSS?Создание закругленной кнопки с GWT

Вот мой код.

public class RoundButton extends Composite 
    { 
     protected final Label textHolder = new Label("helasdfasdf"); 
     protected final Image leftSide = new Image("/icons/left.ico"); 
     protected final Image rightSide = new Image("/icons/right.ico"); 
     protected final HorizontalPanel contentTable; 

     public RoundButton() 
     { 
      contentTable = new HorizontalPanel(); 
      initWidget(contentTable); 
      contentTable.add(leftSide); 
      contentTable.add(textHolder); 
      contentTable.add(rightSide); 
     } 

     public void setText(String text) 
     { 
      textHolder.setText(text); 
     } 
    } 

ответ

1

Чтобы сделать свой RoundButton более стандартизованный я бы реализовать интерфейс com.google.gwt.event.dom.client.HasClickHandlers и добавить событие щелчка на весь ваш компонент (то есть обертку виджет):

public class RoundButton extends Composite implemens HasClickHandlers 
{ 
    protected final Label textHolder = new Label("helasdfasdf"); 
    protected final Image leftSide = new Image("/icons/left.ico"); 
    protected final Image rightSide = new Image("/icons/right.ico"); 
    protected final HorizontalPanel contentTable; 

    public RoundButton() 
    { 
     contentTable = new HorizontalPanel(); 
     initWidget(contentTable); 
     contentTable.add(leftSide); 
     contentTable.add(textHolder); 
     contentTable.add(rightSide); 
    } 

    public void setText(String text) 
    { 
     textHolder.setText(text); 
    } 


    public HandlerRegistration addClickHandler(ClickHandler handler) 
    { 
     return addDomHandler(handler, ClickEvent.getType());   
    } 

} 
+0

Приветствия, и как я могу настроить это с помощью CSS. Я попробовал создать общедоступный setMyHeight (int height), который бы установил высоту каждого подкомпонента, а затем попытался увидеть, делает ли это .round {myHeight: 10; } в CSS будет делать что угодно, но это не сработало. Я пытаюсь сделать что-то, что не имеет смысла? – MayoMan

+0

В самом деле, у вас не правильный путь с css. Gwt почти не добавляет никаких дополнительных свойств в CSS-таблицы стилей (кроме спрайтов и contansts), поэтому с помощью css вы должны полагаться исключительно на стандарты css. Таким образом, в основном, если вы не создаете библиотеку, у вас может быть одна таблица стилей CSS для вашего проекта, где вы определяете все свои стили. В виджетах вы применяете их с помощью метода setStyleName. –

+0

Итак, чтобы быть ясным, что я понимаю, что лучший/правильный способ применения стилей к моему новому классу - применять стили к отдельным компонентам, которые его составляют? – MayoMan

0

Вы можете поймать щелчки на композит, как это:

public RoundButton() 
{ 
    ... 
    sinkEvents(Event.ONCLICK); 
} 

@Override 
public void onBrowserEvent(Event event) 
{ 
    super.onBrowserEvent(event); 
    if (DOM.eventGetType(event) == Event.ONCLICK) 
    { 
     ... 
    } 
} 
Смежные вопросы