2013-07-17 5 views
0

기본적으로 여기에서 수행하려고하는 것은 클릭하는 이벤트에 따라 패널이 표시되는 클릭 이벤트를 처리하는 것입니다. 예를 들어, 버튼 1을 클릭하면 해당 패널이 나타납니다. 그러나 패널 및 클릭 이벤트는 서로에 대해 아무 것도 알지 못합니다. 나는 그것이 익명의 클래스라고 믿는다. 이 문제를 해결하기 위해 노력하고 있습니다. 이것을 구현하는 좋은 방법은 무엇입니까?다른 방법으로 GWT 클릭 이벤트 처리

이 내 버튼을 클릭 이벤트 클래스

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에 추가하십시오. 이벤트가 발생하면 핸들 클래스는 이벤트를 catch하고 이벤트의 데이터로 작업합니다.

유용 할 수 있습니다. How to use the GWT EventBus

+0

흥미 롭습니다. 그 클래스의 패널에 다른 버튼을 추가하는 다른 클래스의 메서드를 호출 할 수없는 이유가 궁금합니다. 왜 업데이트되지 않는지 혼란 스럽습니다. – meepin

+0

고맙습니다. – meepin

관련 문제