java列表框应用



1.使用Vector:首先把你的数据项都存放在Vector中,然后调用JList的setListData()方法,将Vector添加到JList中


   Vector vt=new Vector();


   JList list=new JList();


   vt.add("aaa");


   vt.add("bbb");


   list.setListData(vt);


2.通过构造函数添加数据


String[] data = {"one", "two", "three", "four"};
JList dataList = new JList(data);


3.使用DefaultListModel添加数据,这种方法网上大部分都是像下面一样写的:


DefaultListModel m=(DefaultListModel)list.getModel();


for(int i=0;i<10;i++){


m.addElement(...);


}


但是我实验了几次都不成功,提示list.getModel()不能转换为DefaultListModel,或许他们少些了些什么,在使用之前,先要给JList


设定一个Model,例如:


DefaultListModel m=new DefaultListModel();


for(int i=0;i<10;i++){


m.addElement(...);


}


list.setModel(m);


除此之外,JList中还可以添加组件,方法很简单,只要用JList的add方法就可以了。


这些方法都是我亲自验证过的,没有问题的,提供给大家参考一下。
1、 Java中Jlist这个Swing组件是用来展示一组项目,供用户选择的。
  可以将要展示的项目放在一个列上,也可以展示在多一个列中。有时候要展示的项目太多,组件的尺寸又不能随意扩大,所以,该组件常常是放在Scroll pane容器中的。
  2、 初始化一个Jlist组件:
  下面是定义一个Jlist组件,并将它放在JscrollPane容器中的简单代码: JScrollPane scrollPane = new JScrollPane();
  scrollPane.setBounds(65, 65, 122, 144);
  String listItem[] = {"苹果","香蕉","橘子","核桃"};
  Jlist list = new JList(listItem);
  scrollPane.setViewportView(list);
  初始化一个Jlist组件时有三种方式,第一种就是上面这个例子:给构造函数传入一个数组型的参数。它的原型是:
  public JList(Object[] listData)
  第二种方式是向构造函数传入一个Vector型的参数,例如: Vector<String> v = new Vector<String>();
  v.add("广东");
  v.add("上海");
  v.add("深圳");
  Jlist list = new JList(v);
  它的原型是:public JList(Vector<?> listData)


  如果用上面这两种方式来初始化一个Jlist组件的话,那么其中所显示的各个项目就被固定了,不能在程序中被随意增加或者删除其中任何一个项目了。但是在程序中常常需要动态决定该组件中显示哪些项目,这时就应该指定Jlist的数据模型(list’s model)了。因为在Jlist中所显示的所有项目,都是“存储”在和它捆绑在一起的一个ListModel中的。在程序中要对Jlist中的项目进行诸如增加、删除等操作时,都不是直接在Jlist中进行的,而是在这个ListModel中完成的。可以有两种方式指定该组件的模型,一种是在定义该组件时作为参数传入。它的原型是:
  public JList(ListModel dataModel)
  另一种是调用方法:setModel来单独设置。
如下示例代码:
    DefaultListModel listModel = new DefaultListModel();
  listModel.addElement("Debbie Scott");
  listModel.addElement("Scott Hommel");
  listModel.addElement("Alan Sommerer");
  Jlist list = new JList(listModel);
  这时,可以通过调用数据模型的下列方法来随时改变组件中所显示的项目(当然,这些方法都属于ListModel的方法):


   public void add(int index, Object element);//在指定位置插入项目
  public void addElement(Object obj);//在最后面插入项目
  public boolean removeElement(Object obj);//删除最先匹配的项目
  public Object remove(int index);//删除指定位置的项目
  public Object get(int index);//获得指定位置的项目
  public Object set(int index, Object element);//修改指定位置的项目
  3、 设置选择模式
  Jlist组件有三种选择项目的模式:
  第一种是:SINGLE_SELECTION:
  显然,这种模式下每次只允许选择一个项目。
  第二种是:SINGLE_INTERVAL_SELECTION:
  这种模式下允许连续选择多个项目。
  第三种是:MULTIPLE_INTERVAL_SELECTION:
  它允许间隔开地选择多个项目。这种模式是默认的选择模式,如果你要用上面两种模式,则需要显式地指定:
  list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  4、 操作用户选择的内容:
  public Object getSelectedValue();//可以返回用户选择的项目的内容
  public int getSelectedIndex();//返回用户选择的项目的下标,从0开始
  public Object[] getSelectedValues()


实例操作:
 1.定义 mylist 类
 public class mylist {
  public String id,name;
  public mylist(String id1,String name1)
  {
 id=id1;
 name=name1;
  }
  public String toString(){    //这是必须的,列表框显示的内容
  return name; 
  } 


  }


 2.调用添加(删除比较麻烦):
                         Vector vl=new Vector();  //泛型类
mylist l1=new mylist("01","AAA");
mylist l2=new mylist("02","BBB");
vl.add(l1);
vl.add(l2);
jList.setListData(vl);
3.添加/修改(方便删除修改删除) 
                DefaultListModel vl=new DefaultListModel();
mylist l1=new mylist("01","AAA");
mylist l2=new mylist("02","BBB");
vl.addElement(l1);
vl.addElement(l2);
jList1.setModel(vl);




4.删除指定列表项 注意:JList1 jList2=new JList(new DefaultListModel()); //新建时必须为DefaultListModel()
    DefaultListModel listModel1 = (DefaultListModel)jList1.getModel();
    DefaultListModel listModel2 = (DefaultListModel)jList2.getModel();
    int i=jList1.getSelectedIndex();
    listModel2.addElement(jList1.getSelectedValue());
    if(i>=0)
    {
     listModel1.remove(i);
     }


5.提取列表中值
      mylist m_li=(mylist)jList.getSelectedValue();
      jText1.setText(m_li.id);





猜你喜欢

转载自blog.csdn.net/qq_38723677/article/details/78151194