1. 问题的提出
以前做一个界面的时候常常会遇到这样的尴尬情况:希望保留各个独立的组件(类),但又希望它们之间能够相互通信。譬如windows中的explorer,我们希望鼠标点击左边是树型目录的一个节点,右边的文件浏览能及时列出该节点目录下的文件和子目录,类似这样一个简单的应用,如果只有一个类继承jframe,而树型组件和浏览文件的面板作为成员,就像:
| public class mainframe extends jframe { jpanel treepanel; jtree tree; jpanel filepanel; ... } |
| class treepanel extends jpanel { jtree tree; ... } class filepanel extends jpanel { public filepanel(jtree tree){...} ... } |
| class treepanel extends jpanel { jtree tree; ... } class filepanel extends jpanel implements runnable { public void run() { while (true) { //监听tree的变化 } ... } ... } |