开发者社区> 问答> 正文

java SWT自定义控件获得本身实例的问题

我写有一个自定义控件AutoCompleteText,它继承 SWT的 Text文本框,我为它多挂载了一个SWT的List下拉列表,意义是在输入的时候可以直接选择弹出的List中的下拉项来填写这个Text,但是当我在一个View里面多放几个(两个以上)AutoCompleteText控件的时候,每次选择下拉项中item后,它都填充去了最后一个放进去AutoComplete控件里,而不是填充去它挂载的那个Text下,选择List 下拉列表中的item项的事件是
`
this.setText(list.getItem(list.getSelectionIndex()));
`
screenshot

这是为什么,我哪里做错了或者想法不对?

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
                 
            }
        });
 
}
 

  

展开
收起
爵霸 2016-06-08 15:20:38 2663 0
1 条回答
写回答
取消 提交回答
  • 你的List不能是static的. 将static去掉就ok了.....

    static表示对象间共享, 那么后者创建的AutoComplteText肯定会覆盖前面的AutoCompleteText的事件注册, 从而覆盖

     
    public void mouseDown(MouseEvent e) {
        // TODO Auto-generated method stub
        setText(list.getItem(list.getSelectionIndex()));
    }

    中setText()方法的调用信息来源.....

    2019-07-17 19:32:04
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载