trya.setListData( vl );
a.revalidate();
a.repaint();

解决方案 »

  1.   

    用a.getModel().addElement(newValue)会自动刷新的!
      

  2.   

    这么多方法,哪个更好呢?
    直接用repaint();可以吗?
      

  3.   

    首先明确,Jlist是通过其Model来管理其中的数据结构的;
    其次,一般这种等级的控件的使用是用不着repaint的。我认为的较好的方法:
    //在构造JList时
    JList list_item = new JList();
    list_item.setModel(new DefaultListModel());
    DefaultListModel mo = (DefaultListModel)list_item.getModel();
    mo.addElement("item1");
    mo.addElement("item2");
    mo.addElement("item3");
    .
    .
    .//对Iist_item中的数据进行修改时,只需对其Model进行修改即可,list会自行刷新的。
    DefaultListModel mo = (DefaultListModel)list_item.getModel();
    mo.addElement("newitem");
    mo.clear;to justadog (SomeDog) 
    你试试吧!Good luck!
      

  4.   

    当然,Jlist的基本数据结构是Vector。
    当你想变动你的list中的数据时,可以重新构造新的Vector,在将其放置进去。但一般来讲,这样使用方式很土。
    Jlist特地为对其数据结构的操作提供了ListModel类。理想的思路应该是得到你的list的Model,来对其数据进行一系列的操作。(虽然底层的实质是相似的)如果,你绕过去不用的话,Jlist的设计者会伤心的。^_^
      

  5.   

    谢谢指教,我决定区全面的研究一下swing了,不过似乎并不用从新构造Vector只要Vector.add();
    之后,用一下updateUI就可以了,也许仍然很土,至少可以让jlist的设计者少伤心一点。