博为峰Java技术文章 ——JavaSE Swing列表框选取事件的处理,javaseswing
博为峰Java技术文章 ——JavaSE Swing列表框选取事件的处理,javaseswing
博为峰小博老师:
在JList类中有addListSelectionListener()方法,可以检测用户是否对JList的选取有任何的改变。在ListSelectionListener接口中只定义一个方法,那就是valueChanged(ListSelectionEvente),所以必须实现这个方法,才能在用户改变选取值时取得用户最后的选取状态。
这个程序首先使用数组创建了一个列表框对象,然后再通过实现列表框的事件处理方法,让列表框中选项被选中时在标签组件中显现出来,其代码程序如下所示:
public class BWF implements ListSelectionListener{
static JList<String> list=null;
static JLabel label=null;
public static void main(String[] args) {
JFrame jf=new JFrame("博为峰教育");
Container contentPane=jf.getContentPane();
ListModel<String> mode=new DataModel();
label=new JLabel();
list=new JList<String>(mode);
list.setVisibleRowCount(5);
list.setBorder(BorderFactory.createTitledBorder("电脑配件"));
list.addListSelectionListener(new BWF());
contentPane.add(label,BorderLayout.NORTH);
contentPane.add(new JScrollPane(list),BorderLayout.CENTER);
jf.pack();
jf.setVisible(true);
jf.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public void valueChanged(ListSelectionEvent e) {
int tmp=0;
String stmp="您目前选取:";
int[] index=list.getSelectedIndices();//所选数据的序列号
for(int i=0;i<index.length;i++){
tmp=index[i];
stmp+=new DataModel().s[tmp]+" ";
}
label.setText(stmp);
}
}
class DataModel extends AbstractListModel<String>{
public static String[] s={"主板","显示器","内存","CPU","硬盘","电源","键盘","鼠标","显卡"};
public int getSize() {
return s.length;
}
public String getElementAt(int index) {
return (index+1)+"."+s[index++];
}
}
相关文章
- 暂无相关文章
用户点评