0

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

我有 3 节课:

第一类:

TabbedPane 带有一个 MouseListener,当有人点击一个选项卡时,鼠标监听器会改变一个名为“update”的变量。

这个类有一个这样的方法:

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
    }
}

我的问题是我需要不断地知道变量需要更新是否改变,我不知道如何实现我自己的监听器来做到这一点。我不能直接在第一类中调用第三类,因为我想将控制集中在第二类上。

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

4

2 回答 2

0

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

于 2013-05-17T13:10:14.203 回答
0

这是一个典型的例子,观察者模式是理想的解决方案。有关如何实现该模式的详细信息,请参阅这篇实现观察者模式的帖子。

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

于 2013-05-17T13:35:18.620 回答