您的位置:首页 > 编程语言 > Java开发

博为峰Java技术文章 ——JavaSE Swing列表框选取事件的处理

2017-03-03 21:04 393 查看
博为峰小博老师:

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++];

}

}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息