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相比較的好處
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章