GWT ListBox не выбран по умолчанию - PullRequest
5 голосов
/ 02 марта 2012

У меня есть ListBox GWT с элементами:

listBox = new ListBox();
listBox.addItem("A");
listBox.addItem("B");
listBox.addItem("C");

, и я бы хотел, чтобы он изначально не был выбран, чтобы ни один элемент не был выбран.Первоначальный недостаток выбора должен обозначаться пустым текстом, и после выбора любого элемента пользователь не может выбрать «элемент без выбора».

К сожалению, следующая строка:

listBox.setSelectedIndex(-1);

throwsIndexOutOfBoundsException.

Возможно ли получить такое поведение с помощью GWT ListBox?

Ответы [ 2 ]

8 голосов
/ 02 марта 2012

Да, это нормальная ситуация, потому что когда вы звоните setSelectedIndex(), он проверит, находится ли индекс в диапазоне.В классе ListBox есть метод.

 private void checkIndex(int index) {
    if (index < 0 || index >= getItemCount()) {
      throw new IndexOutOfBoundsException();
    }
  }

Поэтому по умолчанию будет выбран индекс 0.Если вы хотите добавить пустой текстовый элемент для первого элемента, добавьте дополнительный элемент для нулевого индекса с пустой строкой:

listBox = new ListBox();
listBox.addItem(" ");
listBox.addItem("A");
listBox.addItem("B");
listBox.addItem("C");
listBox.addChangeHandler(new ChangeHandler() {
        public void onChange(ChangeEvent changeEvent) {
            SelectElement selectElement = listBox.getElement().cast();
            selectElement.getOptions().getItem(0).setDisabled(true);

        }
    });
0 голосов
/ 23 ноября 2013

Стоит отметить, что ListBox использует тег select. С тэгом выбора, в котором не указан атрибут нескольких объектов, по умолчанию браузер выбирает первый элемент, который вы не можете предотвратить. Вы можете изменить это поведение - тег опции в HTML может иметь выбранный атрибут, что означает, что он выбран по умолчанию. Но GWT, похоже, не предоставляет какого-либо способа установить элемент как выбранный по умолчанию (было бы неплохо, если бы имелась перегрузка addItem, которая приняла логическое значение для выбранного по умолчанию, или метод setDefaultSelected (int index)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...