GWT从uiBinder恢复可见性限制

时间:2014-09-08 09:02:14

标签: java gwt visibility restore restrictions

假设我的ui.xml文件中有一些visible="false"属性的组件,在我的java代码中我展示了一些组件。有没有简单的方法/方法来恢复存储在uiBinder中的可见性限制,所以我得到了基本的组件配置?

2 个答案:

答案 0 :(得分:2)

不,UiBinder不会这样做。编译时使用ui.xml文件为您生成Java代码。因此,您的visible="false"可能会生成对UiObject.setVisible等的调用。当您致电initWidget(uiBinder.createAndBindUi(this));时,会运行此代码。如果你想恢复"你的小部件到UiBinder设置的初始状态我担心唯一简单的方法是再次实例化小部件 - 但我不推荐这个,因为它通常是一个代价高昂的操作。最好只编写一个将字段恢复到预定义状态的方法 - 您也可以使用此方法设置初始状态,而不是在UiBinder模板中定义它(并在某种意义上复制)。我假设您在课堂上可以访问所有必要的字段(因为您提到在您的问题中通过Java代码更改其可见性),因此您不必添加一堆字段来调用{{ 1}}在他们身上。

答案 1 :(得分:0)

您只需将setVisible(true)调用到您想要的小部件:

Fichier UiBinder

<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
    xmlns:g='urn:import:com.google.gwt.user.client.ui'>

  <g:HTMLPanel>
    Hello, <g:TextBox ui:field='textBox' visible='false'/>.
  </g:HTMLPanel>

</ui:UiBinder>

Fichier Java

public class HelloWidgetWorld extends Composite {

  interface MyUiBinder extends UiBinder<Widget, HelloWidgetWorld> {}
  private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);

  @UiField TextBox textBox;

  public HelloWidgetWorld() {
    // sets listBox
    initWidget(uiBinder.createAndBindUi(this));
  }

  public void restoreVisible() {
     textBox.setVisible(true);
  }
}