我写有一个自定义控件AutoCompleteText,它继承 SWT的 Text文本框,我为它多挂载了一个SWT的List下拉列表,意义是在输入的时候可以直接选择弹出的List中的下拉项来填写这个Text,但是当我在一个View里面多放几个(两个以上)AutoCompleteText控件的时候,每次选择下拉项中item后,它都填充去了最后一个放进去AutoComplete控件里,而不是填充去它挂载的那个Text下,选择List 下拉列表中的item项的事件是
`
this.setText(list.getItem(list.getSelectionIndex()));
`
这是为什么,我哪里做错了或者想法不对?
public class AutoCompleteText extends Text{
private static List list;
list.addMouseListener(new MouseListener() {
public void mouseDown(MouseEvent e) {
// TODO Auto-generated method stub
setText(list.getItem(list.getSelectionIndex()));
}
public void mouseDoubleClick(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println(list.getSelectionIndex());
}
public void mouseUp(MouseEvent e) {
// TODO Auto-generated method stub
}
});
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
你的List不能是static的. 将static去掉就ok了.....
static表示对象间共享, 那么后者创建的AutoComplteText肯定会覆盖前面的AutoCompleteText的事件注册, 从而覆盖
public void mouseDown(MouseEvent e) {
// TODO Auto-generated method stub
setText(list.getItem(list.getSelectionIndex()));
}
中setText()方法的调用信息来源.....