MyJList myList = new MyJList();
myList.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if(!e.getValueIsAdjusting()){
System.out.println("Selected!");
}
}
});
。 。
class MyList extends JList{
public MyList () {
super();
this.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
this.setSelectedIndex(0);
}
}
当我用鼠标点击列表项时,我看到消息«Selected!»。
程序启动时,此消息未显示,但选择了项目#0。
答案 0 :(得分:2)
构造函数中的setSelectedIndex
然后,添加SelectionListener
调用setSelectedIndex
时......没有监听器
答案 1 :(得分:0)
这正是应该发生的事情。仅在用户选择项目时调用valueChanged
。 setSelectedIndex
不会调用任何侦听器。
答案 2 :(得分:0)
查看代码的顺序:
a)创建列表并将索引设置为0
b)添加ListSelectionListener。自从你添加了监听器以来没有任何改变,所以没有事件被触发。
尝试添加:
list.setSelectedIndex(1)
添加侦听器后查看是否触发了事件。