2011-06-01 40 views
0

在我的Eclipse项目,我有一个麻烦与Eclipse监听并获取源代码

Text custom_text = new Text(....); 

现在我添加一个侦听 -

custom_text.addKeyListener(新 的KeyListener(){

@Override public void keyPressed(KeyEvent event){

}

@Override public void keyReleased(KeyEvent event){ System.err.println(“event ”+ event.getSource()));

}});

无论如何,我没有得到源名称,尽管我得到的输出为文本{}。 嗯,我想获得源名称,即custom_text。

如何获得在听者 输出custom_text

回答

0

恕我直言,你不能在变量名,持有引用您的文本字段。知道变量的名字也没有什么用处,因为你可以有很多引用变量。

With .getSource()您可以完全引用小部件本身,因此您可以用任何方式处理它。

+0

其实我期待这个名字是因为其他用途。而且getSource()只是将Text()作为输出。所以我被卡住了。实际上,在Swing中,我们获取对象引用名称。所以我期望在这里相同的行为 – 2011-06-01 08:11:17

+1

你将** **永远**得到“custom_text”。这些信息在编译时会丢失。该源仍然是对象引用,它只是覆盖toString()输出“Text {}”。根据你写的内容,Swing也不会打印“custom_text”。或者,你的意思是你想要Text内容的**内容**吗? – 2011-06-01 11:25:54

+0

是的,我对我的目标感到困惑。上面所有的都是正确的... – 2011-06-01 12:30:31

0

您可以使用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(); 
    } 
});