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的列表框_强制存储列表项的练习
xxxxxxxxxx
package 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();
}
}