2011-06-01 55 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(); 
    } 
});