我尝试使用SWT.Modify事件的侦听器。这适用于Text,但似乎不适用于List。也就是说,以下不起作用:
myList = new List(listComp, SWT.MULTI|SWT.BORDER|SWT.V_SCROLL);
myList.addListener(SWT.Modify, new Listener() {
public void handleEvent(Event e) {
System.out.println("My list modified");
dirty=true;
}
});
谢谢你的帮助。
监听SWT.Selection
事件而不是SWT.Modify
。
还可以考虑使用ListViewer而不是List,后者具有addSelectionChangedListener()
和addPostSelectionChangedListener()
方法(当用户使用键盘在列表中导航时"停止"某个项目时,会通知后者,而不是通知每个项目)。
您应该将监听器注册到您的模型中,该模型通过列表进行可视化,并在那里而不是小部件中侦听更改。
为什么不创建自己的自定义列表(例如。http://www.snip2code.com/Snippet/11489/Custom-SWT-List-Box)并直接管理班级内的事件?