Java 两个类之间的变量侦听器
一个月前我遇到了一个问题:S。就是这样: 我有三门课: 第1类: 带有鼠标侦听器的选项卡窗格,当有人单击选项卡时,鼠标侦听器会更改一个名为“更新”的变量 此类具有如下方法:Java 两个类之间的变量侦听器,java,class,variables,listener,Java,Class,Variables,Listener,一个月前我遇到了一个问题:S。就是这样: 我有三门课: 第1类: 带有鼠标侦听器的选项卡窗格,当有人单击选项卡时,鼠标侦听器会更改一个名为“更新”的变量 此类具有如下方法: public boolean getUpdateMenuState(){ //Creates the update variable boolean update = false; //If a update is necessary if(needUpdate = true){ //
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;
}
第二类,主要是:
这个类需要知道变量是否需要更新,我有这个方法:
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是否发生了更改,而我不知道如何实现自己的侦听器来实现它。
我不能在第一个类中直接调用第三个类,因为我想集中控制第二个类
如果有人能帮助我,我将不胜感激。我认为这是使用Observer设计模式的经典案例。类2将是主题(即类1)上发生的事情的观察者,并在收到通知时执行它需要执行的操作,即在类3上调用addMenu()。这是一个经典示例,其中观察者模式是理想的解决方案。有关如何实现该模式的详细信息,请参阅本文 PS:刚刚看到你对其中一个答案的回复;
在您的情况下,最好使用类而不是布尔变量,您可以扩展该类 更新是否意味着与needUpdate保持相同的值?你考虑过使用setter和getter吗?更好的是,对于观察者模式来说,这似乎是一个很好的示例,可以让它知道值何时更改。还要检查java observable。谢谢,但我无法扩展它,因为我已经扩展了一个JFrame:SI刚刚尝试过这样做,但我在需要这样做时遇到了一个问题:menuOb.addObserver(new Main());我另一次生成应用程序:S,因为main是我的观察者。已解决,我刚刚在另一个类的构造函数中添加了main,它与menuOb.addObserver(main());:)