Eclipse Listener遇到问题并获取源代码

问题描述

| 在我的Eclipse项目中,我有一个
Text custom_text = new Text(....);
现在,我添加一个侦听器-   custom_text.addKeyListener(new   KeyListener(){      @Override public void keypressed(KeyEvent event){      }      @覆盖公共无效   keyreleased(KeyEvent event){         System.err.println(\“事件   \“ + event.getSource()));      }}); 无论如何,我没有得到源名称,尽管我得到的输出为Text {}。 好吧,我想获取名称,即custom_text。   如何在侦听器中获取输出   custom_text     

解决方法

        恕我直言,您不能使用变量名称,而要保留对文本字段的引用。知道变量的名称也没有任何用处,因为您可以有许多引用变量。 使用.getSource(),您可以获得对小部件本身的完整引用,因此您可以通过任何方式进行处理。     ,        您可以使用event.widget来标识该窗口小部件通知事件。 但是一般的方法是通过匿名监听器进行中继。 因为它可以使用更易读的方法名称,这更适合控制器的主题。
Text nameField,emailField = ...

nameField.addListener(SWT.KeyUp,new Listener(){
    public void handleEvent(Event e){
        handleNameEdited();   
    } 
});

emailField.addListener(SWT.KeyUp,new Listener(){
   public void handleEvent(Event e){
       handleEmailEdited();
   }
});