两个类之间的变量监听器

时间:2013-05-17 13:03:56

标签: java class variables listener

我有一个月前的问题:S。就是这样:

我有3个班级:

第1课:

带有MouseListener的TabbedPane,当有人点击标签时,鼠标监听器会更改名为“更新”的变量。

这个类有这样的方法:

public boolean getUpdateMenuState(){
    //Creates the update variable 
    boolean update = false;
    //If a update is necessary
    if(needUpdate = true){    //Need update is defined at top of the class
        //Reset the update variable
        needUpdate = false;
        //Set the getUpdate variable to true
        update = true;
        System.out.println("The menu needs to be updated");
    }
    //return the update
    return update;

}

第二节课是主要的:

这个类需要知道变量needUpdate是否发生了变化,我有这个方法:

private void updateMenu(){
    //Create a variable update
    boolean update = false;
    //Set the variable update to the get state
    update = myTabbedPane.getUpdateMenuState();
    //If a update is requiered, re-add the menu
    if(update){
        menu.addMenu(); //Call the third class that have the method addMenu
    }
}

我的问题是我需要经常知道变量needUpdate是否已更改,而且我不知道如何实现自己的侦听器来执行此操作。 我不能直接在第一个类中调用第三个类,因为我想将控件集中在第二个类上。

请,如果有人可以帮助我,我将不胜感激。

2 个答案:

答案 0 :(得分:0)

我认为这是使用观察者设计模式的经典案例。第2类将是主题上发生的事情的观察者,即第1类,并在收到通知时执行它需要做的事情,即在第3类上调用addMenu()。

答案 1 :(得分:0)

这是一个典型的例子,Observer模式是理想的解决方案。有关如何实现模式的详细信息,请参阅此Implementing Observer Pattern帖子。

PS:刚刚看到你对其中一个答案的回复; 在您的情况下最好使用Class而不是布尔变量,您可以扩展该类。