import java.awt.BorderLayout;
import javax.swing.AbstractListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
/**
* 主类
* @author Administrator
*
*/
public class MyListModelTest {
public static void main(String[] args) {
// TODO 自动生成的方法存根
JFrame frame = new ListModelFrame("列表监听事件实例");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
/**
* 定义列表模式窗体类,继承自JFrame
* @author Administrator
*
*/
@SuppressWarnings("serial")
class ListModelFrame extends JFrame{
public ListModelFrame(String title)//构造方法
{
super(title);//调用父类函数,设置标题
setSize(350, 150);//设置窗体大小
final JList wordList;//声明列表对象
// 文本框控件
final JTextField textField;
textField = new JTextField();
wordList = new JList(new ListModelTest());//定义列表框并设置其模式
wordList.setVisibleRowCount(4);
JPanel listPanel = new JPanel();//创建JPanel
listPanel.add(new JScrollPane(wordList));//将列表插入滚动条
//列表框默认可以选择多个选项,方法是:按住CTRL健,在要选择的选项上单击。
//要连续选择选项,必须选择第一个选项,然后按住SHIFT键,在最后一个选项上单击。
wordList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); //这个设置只能选择一个选项。
//wordList.setLayoutOrientation(JList.HORIZONTAL_WRAP);//定义布置列表单元的方式,单元按先水平后垂直排列。
//添加列表框到窗体
add(listPanel, BorderLayout.CENTER);
//添加文本框到窗体
add(textField, BorderLayout.SOUTH);
//添加列表选择监听器
wordList.addListSelectionListener(new ListSelectionListener(){
@Override
public void valueChanged(ListSelectionEvent e)
{
StringBuilder str = new StringBuilder("您好,");
Object valueList[] = wordList.getSelectedValues();//获取选择的内容
for(int i=0; i<valueList.length; i++)
{
String s = (String)valueList[i];
str.append(s+",");
}
str.delete(str.toString().length()-1, str.toString().length());
str.append("欢迎你!");
textField.setText(str.toString());
}
});
}
}
@SuppressWarnings("serial")
class ListModelTest extends AbstractListModel{
String[] words={"广东","湖南","湖北","广西","四川","黑龙江",
"河北","甘肃","宁夏","辽宁","吉林","上海","重庆","北京","河南"};
@Override
public int getSize()
{
return this.words.length;
}
@Override
public Object getElementAt(int index)
{
return this.words[index];
}
}
源代码包: