目錄
第一節 清單
第二節 執行個體示範
第一節 清單
清單(JList)是可供使用者進行選擇的一系列可選項。常用的構造方法如下。
•JList( ):構造一個空清單。
•JList(Object[] listData):構造一個清單,清單的可選項由對象數組listData指定。
•JList(Vector<?>listData):構造一個清單,使其顯示指定Vector中的元素。
例如,下面的語句根據String 數組構造一個包含4個可選項的清單。
String[] data={”one”,“two”,“three”,"four“};
JListdataList=new JList(data);
當使用者在清單上進行選擇時,将引發ListSelectionEvent事件。在JList中提供了addListSelectionListener(ListSelectionListener listener)方法,用于注冊對應的事件偵聽程式。在ListSelectionListener接口中,隻包含一個方法:
public void valueChanged(ListSelectionEvent e);
當清單的目前選項發生變化時,将會調用該方法。在JList類中定義了相關的方法,常用的有以下幾種。
public intgetSelectedIndex( ):傳回所選項第一次出現的索引;如果沒有所選項,則傳回-1。
•public Object getSelectedValue( ):傳回所選的第一個值,如果選擇為空,則傳回null。
•public void setVisibleRowCount(intvisibleRowCount):設定不使用滾動條可以在清單中顯示的首選行數。
第二節 執行個體示範
執行個體代碼如下
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
public class Subject {
JFrame frame=new JFrame("JList Demo");
JList list;
DefaultListModel listModel;
JPanel panel;
JTextField tf;
JButton button;
public static void main(String args[])
{
Subject s=new Subject();
s.go();
}
public void go()
{
listModel=new DefaultListModel();
listModel.addElement("one");
listModel.addElement("two");
listModel.addElement("three");
listModel.addElement("four");
list=new JList(listModel);
JScrollPane jsp=new JScrollPane(list,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
Container cp=frame.getContentPane();
cp.add(jsp);
tf=new JTextField(15);
button=new JButton("add new item");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
listModel.addElement(tf.getText());
}
});
panel=new JPanel();
panel.add(tf);
panel.add(button);
cp.add(panel,BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
最後實作的效果如下