我有一个月前的问题: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是否已更改,而且我不知道如何实现自己的侦听器来执行此操作。 我不能直接在第一个类中调用第三个类,因为我想将控件集中在第二个类上。
请,如果有人可以帮助我,我将不胜感激。
答案 0 :(得分:0)
我认为这是使用观察者设计模式的经典案例。第2类将是主题上发生的事情的观察者,即第1类,并在收到通知时执行它需要做的事情,即在第3类上调用addMenu()。
答案 1 :(得分:0)
这是一个典型的例子,Observer模式是理想的解决方案。有关如何实现模式的详细信息,请参阅此Implementing Observer Pattern帖子。
PS:刚刚看到你对其中一个答案的回复; 在您的情况下最好使用Class而不是布尔变量,您可以扩展该类。