代码:
package MyJava.Base;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
class JListFrame extends JFrame
{
public JListFrame(String title)
{
super(title);
setSize(300,200);
//获得容器
Container container=this.getContentPane();
container.setLayout(new GridLayout(2,2));
//面板一:通过Array对象建立JList组件
JPanel panel1=new JPanel();
String [] str={"柳真","全知贤","宋慧乔","王祖贤","张国荣","李英宰"};
JList list1=new JList(str);
//设置选择选项的模式
list1.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
//设置JList的标题
list1.setBorder(BorderFactory.createTitledBorder("你最喜欢的明星是哪个??"));
//建立滚动条效果
container.add(new JScrollPane(list1));
//面板二:通过Vector对象建立JList组件
JPanel panel2=new JPanel();
Vector v=new Vector();
v.addElement("反恐精英");
v.addElement("魔兽争霸");
v.addElement("极品飞车");
v.addElement("魔兽世界");
v.addElement("其它");
JList list2=new JList(v);
list2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list2.setBorder(BorderFactory.createTitledBorder("你最喜欢的游戏是哪个??"));
panel2.add(list2);
container.add(new JScrollPane(list2));
//面板三;通过ListModel 建立JList组件
JPanel panel3=new JPanel();
DataModel mode=new DataModel(2);
JList list3=new JList(mode);
list3.setBorder(BorderFactory.createTitledBorder("你能看到的用户组"));
panel3.add(list3);
container.add(new JScrollPane(list3));
//面板四:建立带有图像的JList组件
JPanel panel4=new JPanel();
String [] chater={"头像一","头像二","头像三","头像四"};
JList list4=new JList(chater);
// list4.setBorder(BorderFactory.createTitledBorder("你最喜欢的游戏是哪个??"));
list4.setCellRenderer(new CellRenderer());
panel4.add(list4);
container.add(new JScrollPane(list4));
}
class DataModel extends AbstractListModel
{
String [] user={"会员一","会员二","会员三","会员四","会员五",
"普通用户一","普通用户二","普通用户三","普通用户四"
};
int flag=0;
DataModel(int f)
{
flag=f;
}
public Object getElementAt(int index)
{
String temp=null;
if(flag==1)
temp=(index+1)+"."+user[index++];
if(flag==2)
{
if(index<5)
temp=(index+1)+"."+user[index++];
}
return temp;
}
public int getSize()
{
return user.length;
}
}
class CellRenderer extends JLabel implements ListCellRenderer
{
CellRenderer()
{
setOpaque(true);
}
public Component getListCellRendererComponent(JList list,Object value,int index,boolean isSelected,boolean cellHasFocus)
{
if(value!=null)
{
setText(value.toString());
setIcon(new ImageIcon("E://Java//JCreator2.5//picture//"+(index+1)+".gif"));
}
if(isSelected)
{
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
}
else
{
setBackground(list.getBackground());
setForeground(list.getForeground());
}
return this;
}
}
}
public class JListDemo
{
public static void main(String[] args) throws Exception
{
JListFrame frame=new JListFrame("JListDemo");
// frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
{
public JListFrame(String title)
{
super(title);
setSize(300,200);
//获得容器
Container container=this.getContentPane();
container.setLayout(new GridLayout(2,2));
//面板一:通过Array对象建立JList组件
JPanel panel1=new JPanel();
String [] str={"柳真","全知贤","宋慧乔","王祖贤","张国荣","李英宰"};
JList list1=new JList(str);
//设置选择选项的模式
list1.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
//设置JList的标题
list1.setBorder(BorderFactory.createTitledBorder("你最喜欢的明星是哪个??"));
//建立滚动条效果
container.add(new JScrollPane(list1));
//面板二:通过Vector对象建立JList组件
JPanel panel2=new JPanel();
Vector v=new Vector();
v.addElement("反恐精英");
v.addElement("魔兽争霸");
v.addElement("极品飞车");
v.addElement("魔兽世界");
v.addElement("其它");
JList list2=new JList(v);
list2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list2.setBorder(BorderFactory.createTitledBorder("你最喜欢的游戏是哪个??"));
panel2.add(list2);
container.add(new JScrollPane(list2));
//面板三;通过ListModel 建立JList组件
JPanel panel3=new JPanel();
DataModel mode=new DataModel(2);
JList list3=new JList(mode);
list3.setBorder(BorderFactory.createTitledBorder("你能看到的用户组"));
panel3.add(list3);
container.add(new JScrollPane(list3));
//面板四:建立带有图像的JList组件
JPanel panel4=new JPanel();
String [] chater={"头像一","头像二","头像三","头像四"};
JList list4=new JList(chater);
// list4.setBorder(BorderFactory.createTitledBorder("你最喜欢的游戏是哪个??"));
list4.setCellRenderer(new CellRenderer());
panel4.add(list4);
container.add(new JScrollPane(list4));
}
class DataModel extends AbstractListModel
{
String [] user={"会员一","会员二","会员三","会员四","会员五",
"普通用户一","普通用户二","普通用户三","普通用户四"
};
int flag=0;
DataModel(int f)
{
flag=f;
}
public Object getElementAt(int index)
{
String temp=null;
if(flag==1)
temp=(index+1)+"."+user[index++];
if(flag==2)
{
if(index<5)
temp=(index+1)+"."+user[index++];
}
return temp;
}
public int getSize()
{
return user.length;
}
}
class CellRenderer extends JLabel implements ListCellRenderer
{
CellRenderer()
{
setOpaque(true);
}
public Component getListCellRendererComponent(JList list,Object value,int index,boolean isSelected,boolean cellHasFocus)
{
if(value!=null)
{
setText(value.toString());
setIcon(new ImageIcon("E://Java//JCreator2.5//picture//"+(index+1)+".gif"));
}
if(isSelected)
{
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
}
else
{
setBackground(list.getBackground());
setForeground(list.getForeground());
}
return this;
}
}
}
public class JListDemo
{
public static void main(String[] args) throws Exception
{
JListFrame frame=new JListFrame("JListDemo");
// frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
程序运行的结果:
注意采用ListMode构造JList组件的好处,与使用Vector相比较的好处