java介面編程(9),java介面編程
本文是自己學習所做筆記,歡迎轉載,但請註明出處:http://blog.csdn.net/jesson20121020
列表框和JComboBox組合框明顯不同,這不僅僅是體現在外觀上。當啟用JComboBox組合框時,會出現下拉式清單;而JList總是在螢幕上佔據固定行的空間,大小也不會改變。如果要得到列表框中被選中的項目,只需調用getSelectValues(),它可以產生一個字串數組,裡面是被選中的項目名稱。
另外,JList組件也允許多重選取,要是按住ctrl鍵,連續在多重專案上單擊,那麼原先選中的項目仍舊保持選中的狀態,也就是說可以選中任意多的項目,如果選中了某個項目,按住shift鍵關單擊另一個項目,那麼這兩個項目之間的所有項目都將被選中,這和在windows下的操作選中操作類似。
public class List extends JFrame {private String[] weekDays = {"星期一","星期二","星期三","星期四","星期五","星期六","星期天"};private DefaultListModel lItems = new DefaultListModel();private JList lst = new JList(lItems);private JTextArea t = new JTextArea(weekDays.length,10);private JButton b = new JButton("Add Items");private int count = 0;private ActionListener bl = new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif(count < weekDays.length){lItems.add(0, weekDays[count++]);}else{b.setEnabled(false);}}};private ListSelectionListener ll = new ListSelectionListener() {@Overridepublic void valueChanged(ListSelectionEvent e) {// TODO Auto-generated method stubif(e.getValueIsAdjusting())return ;t.setText("");for(Object item : lst.getSelectedValues())t.append(item + "\n");}};public List() {// TODO Auto-generated constructor stubsetLayout(new FlowLayout());setVisible(true);setSize(300,200);t.setEnabled(false);Border brd = BorderFactory.createMatteBorder(1, 1, 2, 2, Color.BLACK);lst.setBorder(brd);t.setBorder(brd);for(int i = 0; i < 4;i++){lItems.addElement(weekDays[count++]);}add(t);add(lst);add(b);lst.addListSelectionListener(ll);b.addActionListener(bl);}/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubnew List();}} 執行結果如下:
其實在很多應用程式中都可以見到這種列表框,另外,當列表框的項目過多時,JList並沒有提供滾動,當然了,可以將JList封裝到JScrollPane,那麼它將會實現滾動的效果。