问题描述
|
在我的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();
}
});