swing的列表框_强制存储列表项
强制存储列表项的DefaultListModel和DefaultComboBoxModel 前面只是介绍了如何创建JList、JComboBox对象,当调用JList和JComboBox构造方法时时传入数组或Vector作为参数,这些数组元素或集合元素将会作为列表项。当使用JList或JComboBox时常常还需要动态地增加、删除列表项,例如JCombox提供了下列方法完成增删操作:
addItem(E item):添加一个列表项 insertItemAt(E item, int index):向指定索引处插入一个列表项 removeAllItems():删除所有列表项 removeItem(Object anObject):删除指定列表项 removeItemAt(int anIndex):删除指定索引处的列表项
上面的那几个JCombox的方法的底层是DefaultComboBoxModel
JList并没有提供这些类似的方法。如果需要创建一个可以增加、删除列表项的JList对象,则应该在创建JList时显式使用DefaultListModel作为构造参数。因为DefaultListModel作为JList的Model,它负责维护JList组件的所有列表数据,所以可以通过向DefaultListModel中添加、删除元素来实现向JList对象中增加、删除列表项。DefaultListModel提供了如下几个方法来添加、删除元素:
add(int index, E element): 在该ListModel的指定位置处插入指定元素 addElement(E obj): 将指定元素添加到该ListModel的末尾 insertElementAt(E obj, int index): 在该ListModel的指定位置处插入指定元素 Object remove(int index): 删除该ListModel中指定位置处的元素 removeAllElements(): 删除该ListModel中的所有元素,并将其的大小设置为零 removeElement(E obj): 删除该ListModel中第一个与参数匹配的元素 removeElementAt(int index): 删除该ListModel中指定索引处的元素 removeRange(int fromIndex,int toIndex): 删除该ListModel中指定范围内的所有元素 set(int index, E element): 将该ListModel指定索引处的元素替换成指定元素 setElementAt(E obj, int index): 将该ListModel指定索引处的元素替换成指定元素
swing的列表框_强制存储列表项的练习
xxxxxxxxxxpackage ch30;
import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;
//下面是对列表项进行增删改查public class a_22_0swing_列表框_强制存储列表项 {
//成员变量,jf是窗口对象 JFrame jf = new JFrame("测试DefaultListModel");
//文本框 JTextField bookName = new JTextField(20);
//文本框右侧的按钮 JButton addBtn = new JButton("添加指定图书");
//文本框右侧的按钮 JButton removeBtn = new JButton("删除选中图书");
//定义一个JList对象,即列表框。注意只声明,还没有实例化 JList<String> bookList;
//如何才能实现对列表项的增删,需要定义一个DefaultListModel对象 DefaultListModel<String> model = new DefaultListModel<>();
//组装视图 public void init() {
//向model中添加元素,即添加内容,这些内容就是我们的初始列表项,后续可以在这个的基础上对列表项进行增删 model.addElement("java自学宝典"); model.addElement("轻量级javaEE企业应用实战"); model.addElement("Android基础教程"); model.addElement("jQuery实战教程"); model.addElement("SpringBoot企业级开发");
//实例化bookList bookList = new JList<>(model);//bookModel是我们上面添加的内容
//设置bookList列表框的可视高度为4,即列表框一次最多只能显示4个列表项 bookList.setVisibleRowCount(4);
//为了实现一次只能删除一个列表项,所以要设置只能单选某个列表项 bookList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//为addBtn添加事件监听器 addBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //获取文本框的内容,且当bookName文本框内容不为空时才添加列表项 String name = bookName.getText(); if (!name.trim().equals("")) { model.addElement(name);//model是我们最上面定义的 } } }); //为removeBtn添加事件监听器 removeBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //获取当前被选中的图书的索引 int selectedIndex = bookList.getSelectedIndex(); //当索引是大于等于0,就移除索引处的图书列表项 if (selectedIndex >= 0) { model.remove(selectedIndex);//selectedIndex是索引,是我们上上一行定义的 } } });
//把文本框放到jf窗口的中间区域,new JScrollPane()作用是给bookList添加滚动条 jf.add(new JScrollPane(bookList));
//组装底部 JPanel p = new JPanel(); p.add(bookName);//单行文本框 p.add(addBtn);//'添加指定图书'按钮 p.add(removeBtn);//'删除选中图书'按钮
//把组装好的底部,添加到jf窗口 jf.add(p, BorderLayout.SOUTH);
//设置窗口的最佳大小,设置窗口可见,设置点击叉号就退出程序 jf.pack(); jf.setVisible(true); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
public static void main(String[] args) { new a_22_0swing_列表框_强制存储列表项().init(); }
}