目录
第一节 列表
第二节 实例演示
第一节 列表
列表(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);
}
}
最后实现的效果如下