我的程序界面里有两个JList控件,一个显示当前连接的客户列表,另一个显示自己的共享文件列表。这两个JList控件在客户连接改变或共享文件改变时,需要各自刷新自己。主要代码如下:
观察者接口:
public interface Observer {
public void update();
}
主界面:
public class MainFormView implements Observer {
public MainFormView() {
JFrame frame = new JFrame("P2P File Sharing Client");
                  JList list1 = new JList();
                  JList list2 = new JList();
                  frame.getContentPane().add(list1, BorderLayout.CENTER);
                  frame.getContentPane().add(list2, BorderLayout.SOUTH);
          }
          public void update() {
//更新JList
}
}
MainFormView是一个观察者,在数据改变时可以调用update()方法更新自己。
但是当list1需要更新的时候list2不一定需要更新,反之亦然。而这里只有一个update()方法,请问如何现实list1和list2的各自更新呢?          

解决方案 »

  1.   

    怎么没有注册观察者呢???
    还有update方法是带参数的啊
    参数就是观察者
      

  2.   

    程序没有写完,我只是想知道如何分别更新JList
      

  3.   

    JavaSwing本身就是MVC。分别更新JList,那就分别更新对应的ListModel呗,你可以用DefaultListModel。你在update()方法内判断下是客户连接改变或共享文件改变(你肯定还有类是处理客户连接和共享文件的,那里面可以设置标识),然后更新对应的List。
      

  4.   

    这个方法不错的,我也找到了别的方法,就是将两个JList分别定义到两个不同的类里并扩展JPanel,然后在JFrame里将这两个类添加。