2013-07-17 3 views
0

В основном, что я пытаюсь сделать здесь, это события щелчка мыши, которые, как предполагается, отображаются в зависимости от того, какая кнопка нажата. Например, если нажать кнопку «один», появится соответствующая панель. Но событие панели и клика ничего не знает друг о друге. Я считаю, что это называется анонимным классом. У меня возникли проблемы с попыткой реализовать это. Что было бы хорошим способом реализовать это?Обработка событий GWT Click в другом методе

Это мой щелчок кнопки класс событий

public class buttonHandle extends Composite { 

private static buttonHandleUiBinder uiBinder = GWT 
     .create(buttonHandleUiBinder.class); 
@UiField Button button; 
@UiField Button button_1; 

interface buttonHandleUiBinder extends UiBinder<Widget, buttonHandle> { 
} 
public buttonHandle() { 
    initWidget(uiBinder.createAndBindUi(this)); 
} 

@UiHandler("button") 
void onButtonClick(ClickEvent event) { 
} 
@UiHandler("button_1") 
void onButton_1Click(ClickEvent event) { 
} 
} 

Это класс, в котором я пытаюсь добавить новую кнопку каждый раз, когда кнопка нажата

public class PanelHandle extends Composite { 
private AbsolutePanel absolutePanel = new AbsolutePanel(); 

public PanelHandle() { 

    initWidget(absolutePanel); 
    absolutePanel.setSize("1027px", "636px"); 

    Label lblHello = new Label("Hello"); 
    absolutePanel.add(lblHello, 47, 80); 

    Label lblHello_1 = new Label("Hello"); 
    absolutePanel.add(lblHello_1, 232, 249); 
    // TODO Auto-generated constructor stub 
} 
public void buttonOne() 
{ 
    this.absolutePanel.clear(); 
    Button but1 = new Button("button one"); 
    this.absolutePanel.add(but1); 

} 
} 

Я попытался что-то вроде этого, но он не обновляет панель с помощью новой кнопки

private PanelHandle pHandle = new PanelHandle(); 
private static buttonHandleUiBinder uiBinder = GWT 
     .create(buttonHandleUiBinder.class); 
@UiField Button button; 
@UiField Button button_1; 

interface buttonHandleUiBinder extends UiBinder<Widget, buttonHandle> { 
} 
public buttonHandle() { 
    initWidget(uiBinder.createAndBindUi(this)); 
} 


@UiHandler("button") 
void onButtonClick(ClickEvent event) { 
    Window.alert("hello buttone clicked"); 
    pHandle.buttonOne(); 


} 
@UiHandler("button_1") 
void onButton_1Click(ClickEvent event) { 
} 
} 

До сих пор я пытался вызвать метод в классе PanelHandle, но сталкиваюсь с ошибками такого переполнения стека. В другом методе, который я пытался, я не могу обновить панель, когда я добавляю. Я использую кнопку здесь вместо панели только для тестирования, пока не пойму логику.

Спасибо за помощь!

ответ

0

Создайте собственное (gwt) событие при нажатии кнопки. Вы можете запускать свое собственное мероприятие там, где хотите. Заполните событие необходимой информацией. Затем добавьте класс, который должен обработать это событие в gwt eventbus. Если событие запущено, ваш класс дескриптора поймает событие и будет работать с данными из события.

Это может быть полезно: How to use the GWT EventBus

+0

интересный. Я удивляюсь, почему я не могу просто вызвать метод в другом классе, который добавляет еще одну кнопку на панель в этом классе? Я смущен, почему он не обновляет – meepin

+0

Спасибо, что я собираюсь попробовать! – meepin

Смежные вопросы