JList有四种构造
1.空构造
2.数组的,不推荐使用,因为长度不可以改变
3.Vector为参数,增删改方便,但没有直接的监听器事件
4.listModel为参数,功能最强大的,listModel只关心里面的数据
listModel是一个借口,用的时候默认使用它的实现类DefaultListModel 。
JList选择的模式有三种:
1.随意多选
2.只能连续的多选或单选
3.只能单选
JList的监听
要获得选中项或者监听选中项改变事件那么应该使用JList对象(比如鼠标点击)
数据改变需要监听
listModel默认jlist中的渲染是一个JLABEL所有放进去的都会作为一个label来显示
Jlist默认添加的都显示是文本,如果想要添加非文本这类的或者需要显示出自己需要的组件,就必须自定义渲染器自定义渲染器去继承需要显示的组件并实现渲染器接口
设置单元格的渲染器 jlist.setCellRenderer(new MyButtom());其中里面的参数放你需要的组件。加入你需要的是一个按钮就需要新建一个类继承JButton 实现 ListCellRenderer。
实现这个接口的方法,return this就是返回这个组件,在里面把按钮设置为你需要的东西。
如果你需要的很复杂,你可以新建一个类继承JPenal实现 ListCellRenderer ,然后在方法中定义和设置好组件,用this.add把这些组件加进去返回就可以了。
package cn.zkingsoft; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.Vector; import javax.swing.BorderFactory; import javax.swing.DefaultListModel; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollBar; import javax.swing.JScrollPane; import javax.swing.ListCellRenderer; import javax.swing.ListModel; import javax.swing.ListSelectionModel; import javax.swing.ScrollPaneConstants; import javax.swing.event.ListDataEvent; import javax.swing.event.ListDataListener;