Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > удаление элементов коллекции через Enumeration


Автор: Mirkes 30.12.2012, 14:52
День добрый!
Столкнулся со следующей проблемой. Есть стандартный класс ButtonGroup. Нужно его очистить. Для этого он предоставляет интерфейс Enumeration и удаление одной кнопки. К сожалению пересоздание ButtonGroup не подходит. Я пробовал следующий код
Код

     private ButtonGroup bg = new ButtonGroup();
     ...

     // процедура обновления группы
     Enumeration en = bg.getElements();
     while (en.hasMoreElements())
          bg.remove((AbstractButton)en.nextElement());

После выполнения этого кода в группе остается порядка половины элементов (могу дать точную формулу, но это ни к чему).
Интерфейс Enumeration не предоставляет метода удаления. ButtonGroup не предоставляет метода типа Collection.clear().
Кто-то может подсказать как почистить, не устраивая цикла типа:
Код

       while (bg.getButtonCount()>0){
           Enumeration en = bg.getElements();
           while (en.hasMoreElements())
                bg.remove((AbstractButton)en.nextElement());
       }

Заранее благодарен.

Автор: jk1 30.12.2012, 21:36
Я бы предложил слегка расширить ButtonGroup:

Код

class ExtendedButtonGroup extends ButtonGroup {

    public void clear() {
        this.clearSelection();
        for (AbstractButton button : buttons) {
            button.getModel().setGroup(null);
        }
        buttons.clear();
    }
}


Цитата

 не устраивая цикла


Вообще без цикла обойтись едва ли получится, так как требуется сбрасывать группу у всех AbstractButton'ов

Автор: Mirkes 31.12.2012, 00:27
Цитата(jk1 @ 30.12.2012,  21:36)
Я бы предложил слегка расширить ButtonGroup:

Цитата

 не устраивая цикла


Вообще без цикла обойтись едва ли получится, так как требуется сбрасывать группу у всех AbstractButton'ов

Спасибо за идею. Так и сделаю. А под циклом я подразумевал цикл, следящий да уничтожением всего, что было smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)