이벤트 (내 경우 loginEvent)를 수신하는 사용자 정의 합성 위젯을 만들었습니다. 이벤트가 잡히면 위젯의 상태가 바뀌어 표시됩니다 (제 경우에는 아이콘 중 하나를 사용자가 로그인 한 신호로 변경하고 싶습니다).gwt에서 UI 새로 고침
그러나 이벤트가 잡히면 새 상태에 따라 위젯 자체를 다시 그릴 수 있습니까?
나는이 작업을 수행하는 방법에는 여러 가지가있다
이벤트 (내 경우 loginEvent)를 수신하는 사용자 정의 합성 위젯을 만들었습니다. 이벤트가 잡히면 위젯의 상태가 바뀌어 표시됩니다 (제 경우에는 아이콘 중 하나를 사용자가 로그인 한 신호로 변경하고 싶습니다).gwt에서 UI 새로 고침
그러나 이벤트가 잡히면 새 상태에 따라 위젯 자체를 다시 그릴 수 있습니까?
나는이 작업을 수행하는 방법에는 여러 가지가있다
... 너무 완만하고 정교한하시기 바랍니다 GWT 꽤 새로운 오전. 이 예에서는 로그인/로그 아웃을 표시하고 로그인 한 사용자가 이벤트를 발생시킬 때 표시 여부를 전환하는 방법을 보여줍니다.
HorizontalPanel panel = new HorizontalPanel();
Image oldImage = new Image("url to old img");
panel.add(oldImage);
이 그럼 당신은 같은 것을 할 수 있어야한다 :이 같은이있는 경우
public class LoginLogoutWidget extends Compostite {
private final Anchor m_loginLink;
private final Anchor m_logoutLink;
public LoginLogoutWidget() {
m_loginLink = new Anchor("Login");
//Register event handlers etc
m_logoutLink = new Anchor("Logout");
//Register event handlers etc
HorizontalPanel hp = new HorizontalPanel();
hp.add(m_loginLink);
hp.add(m_logoutLink);
initWidget(hp);
//Default login visible, and logout invisible
m_logoutLink.setVisible(false);
}
public void onLoginEvent(boolean loggedIn) {
m_loginLink.setVisible(!loggedIn);
m_logoutLink.setVisible(loggedIn);
}
}
panel.remove(oldImage);
Image newImage = new Image("url to new img");
panel.add(newImage);
panel.layout();
내가 발견 한 그 어떤 경우에는, 경우 I 상위 컨테이너에서 "layout()"메서드를 호출하지 마십시오. 그러면 프로그래밍 방식으로 추가 한 내용이 예상 한 것처럼 화면에 나타나지 않습니다.
희망 하시겠습니까?
panel.layout() - 핵심 GWT가 아닌 GXT처럼 들리네 .... 아니, 다양한 이유로 GXT에서 예상대로 작동하지 않습니다. 변경 사항은 즉시 적용되지 않습니다. DOM, 일반 GWT와는 다릅니다. 이것은 .layout() 및 유사한 메소드에 대한 모든 종류의 초과 호출을 발생시킵니다. 적어도 우리가 그 라이브러리에서 벗어나기 시작하기 전에 우리 코드에서 그랬습니다. 사이드 트 랙 오버, 그렇지 않으면 좋은 점. – bikesandcode