Скажем, у меня есть некоторые компоненты с visible="false"
свойство в моем файле ui.xml, и в моем java-коде я показал некоторые из этих компонентов. Есть ли простой способ/метод для восстановления ограничений видимости, хранящихся в uiBinder, поэтому я получаю конфигурацию основных компонентов?
Нет, UiBinder не работает таким образом. Файл ui.xml
используется во время компиляции для генерации кода Java для вас. Таким образом, ваш visible="false"
, вероятно, приведет к генерации вызова для UiObject.setVisible
и т.д. Этот код запускается при вызове initWidget(uiBinder.createAndBindUi(this));
, Если вы хотите "восстановить" ваш виджет в этом начальном состоянии, установленном UiBinder, я боюсь, что единственный простой способ - снова создать экземпляр виджета, но я не рекомендую это, поскольку обычно это дорогостоящая операция. Лучше просто написать метод, который восстанавливает поля в предопределенное состояние - вы можете использовать этот метод, чтобы также установить начальное состояние, а не определять его (и дублировать в некотором смысле) в шаблоне UiBinder. Я предполагаю, что у вас есть все необходимые поля, доступные в вашем классе (поскольку вы упомянули об изменении своей видимости с помощью Java-кода в своем вопросе), поэтому вам не нужно добавлять кучу полей, чтобы просто вызвать setVisibile
.
Вам просто нужно позвонить 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);
}
}