Каков порядок запускаемых событий в выпадающем списке ItemListener

1

Я добавляю ItemListener в combobox, и я хочу знать, всегда ли событие ItemEvent.DESELECTED запускается перед событием ItemEvent.SELECTED или если заказ не указан.

На простом примере кажется, что DESERECTED запущен раньше, но могу ли я доверять этому примеру?

    combo = new JComboBox<String>(new String[}{"A","B","C"});
    combo.addItemListener(new ItemListener()
    {

        @Override
        public void itemStateChanged(final ItemEvent e)
        {
            if(e.getStateChange() == ItemEvent.SELECTED)
            {
                logger.debug("{} selected", e.getItem());
                // Load the file selected in the JTextArea using JTextArea.setDocument()
            }
            else if(e.getStateChange() == ItemEvent.DESELECTED)
            {
                logger.debug("{} deselected", e.getItem());
                // If doc in the textarea has been modified, save it now
            }
        }
    });

Чтобы добавить контекст к вопросу, я использую комбо, чтобы выбрать файл для загрузки в JTextArea. Пользователь может редактировать файл через текстовое поле. Если она выберет другой файл в комбо, я хочу сообщить ей, что предыдущий файл был отредактирован и попросил ее подтвердить сохранение изменений. Могу ли я реализовать это безопасно в ItemListener комбо? Разумеется, я имею в виду, могу ли я быть уверенным, что если я вызову textArea.getText() в этот момент времени (элемент DESELECTED), я уверен, что текстовое поле еще не заполнено содержимым загружаемого нового файла?

Теги:
swing
jcombobox
itemlistener

1 ответ

2
Лучший ответ

В общем случае заказ не указан. В частности, комбинированный выбор и текстовый дисплей не имеют отношения к базовому состоянию Document. Если пользователь решил продолжить редактирование, просто восстановите измененный Document в текстовой области.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню