JListDemo(原创)

代码:
package MyJava.Base;
import java.awt.*;
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);
 
 }
}
 
程序运行的结果:
 

 
注意采用ListMode构造JList组件的好处,与使用Vector相比较的好处
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值