Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > ошибка IllegalMonitor при уведомлении Наблюдателей


Автор: Alexander06 21.5.2009, 10:34
Здравствуйте.

У меня есть JFrame, объявленный как 
Код

public class DivideNodes extends javax.swing.JFrame implements Observer{
     private DivideNodesData data;
}

 В нем объявлена функция 

Код

public void update(Observable o, Object arg) {
        if(o.getClass() == DivideNodesData.class){
            // изменились данные - перерисовать интерфейс
        }
    }


Класс DivideNodesData наследует класс Observable

Код

public class DivideNodesData extends Observable{
....
    /**
     * Сообщить слушателям об изменениях
     */
    public void signalChanges(){
        setChanged();
        notifyAll();
    }
}


При вызове функции signalChanges из класса DivideNodes, или из класса DivideNodesData происходит ошибка

Код

Exception occurred during event dispatching:
java.lang.IllegalMonitorStateException
        at java.lang.Object.notifyAll(Native Method)


на функции notifyAll.

Даже если не добавлять объекту слушателей.

Не могу понять в чем дело.

Автор: 4EJIOBEK 21.5.2009, 15:17
Вместо метода notifyAll() вызывай notifyObservers(). 

Автор: Alexander06 21.5.2009, 16:58

Спасибо, помоглоsmile

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