java中,如何将类A的属性值在类C中传递给类B,并且当类A的属性值发生改变时,类B的这个值也同时改变?

我在用java做画板时,将其分成三个类来写的。两个JPanel类:ButtonPanel,CanvasPanel。一个JFrame主类:SimpleDraw。
ButtonPanel专门放按钮,并给按钮添加监听。它有一个int属性的typeFlag,当按下按钮时,typeFlag的值发生改变。
CanvasPanel用做画布,它也有一个int属性的typeFlag,还有一个paint方法。paint方法根据不同的typeFlag值画出不同的图形。
SimpleDraw中分别new出 ButtonPanel 和 CanvasPanel 的实例 bp 和 cp,然后我在它的构造方法中,将bp的typeFlag赋给cp的typeFlag。
经调试,监听都没有问题;bp中 typeFlag的初值,赋到了 cp 中,但点击bp上的按钮却没能将相应的typeFlag值传给cp。(bp的typeFlag值发生了改变)

请问怎样才能实时的将变化了的typeFlag传给cp中,使其能做相应的处理(即按一下按钮做不同的响应)?

PS:以前放在一个类中写是没有问题的。

共享一个typeFlag就可以了,在任意类中把typeFlag声明成 public static,其他类直接通过该类类名访问这个变量。追问

嗯,多谢,你的回答点醒了我。我将ButtonPanel类中的typeFlag设成了static,然后在CanvasPanel中直接调用ButtonPanel.typeFlag。的确是可以了。但是我还有一个问题,就是如何直接在SimpleDraw中实现typeFlag值的交互而不用在CanvasPanel中去调用以保证这两个类之间的相互独立性?

追答

方法很多的,SimpleDraw类是窗口,里面有着其他两个类的实例。
你可以直接创建一个类buttonListener,来继承事件监听。
这个类中有两个ButtonPanel和CanvasPanel的成员变量。
构造函数需要这个两个对象,并给自己的成员变量进行赋值。

然后再SimpleDraw中为buttonPanel的对象添加事件监听,并new 一个buttonListener的对象。

在buttonListener中就可以直接对两个面板之间实现互交了。

温馨提示:答案为网友推荐,仅供参考
相似回答