博为峰小博老师:
在JList类中有addListSelectionListener()方法,可以检测用户是否对JList的选取有任何的改变。在ListSelectionListener接口中只定义一个方法,那就是valueChanged(ListSelectionEvente),所以必须实现这个方法,才能在用户改变选取值时取得用户最后的选取状态。
这个程序首先使用数组创建了一个列表框对象,然后再通过实现列表框的事件处理方法,让列表框中选项被选中时在标签组件中显现出来,其代码程序如下所示:
publicclassBWFimplementsListSelectionListener{
staticJListlist=null;
staticJLabellabel=null;
publicstaticvoidmain(String[]args) {
JFramejf=newJFrame("博为峰教育");
ContainercontentPane=jf.getContentPane();
ListModelmode=newDataModel();
label=newJLabel();
list=newJList(mode);
list.setVisibleRowCount(5);
list.setBorder(BorderFactory.createTitledBorder("电脑配件"));
list.addListSelectionListener(newBWF());
contentPane.add(label,BorderLayout.NORTH);
contentPane.add(newJScrollPane(list),BorderLayout.CENTER);
jf.pack();
jf.setVisible(true);
jf.addWindowListener(newWindowAdapter() {
publicvoidwindowClosing(WindowEvente) {
System.exit(0);
}
});
}
publicvoidvalueChanged(ListSelectionEvente) {
inttmp=0;
Stringstmp="您目前选取:";
int[]index=list.getSelectedIndices();//所选数据的序列号
for(inti=0;i
tmp=index[i];
stmp+=newDataModel().s[tmp]+" ";
}
label.setText(stmp);
}
}
classDataModelextendsAbstractListModel{
publicstaticString[]s={"主板","显示器","内存","CPU","硬盘","电源","键盘","鼠标","显卡"};
publicintgetSize() {
returns.length;
}
publicString getElementAt(intindex) {
return(index+1)+"."+s[index++];
}
}