我該如何執行?它可以跨多個程序集工作嗎?如果不是,我該如何讓它工作?與EventHandler相比,EventListener是什麼?
4
A
回答
11
在不充分了解這個問題的風險,我想提供另一種可能的解釋。
談起類,Java有一個EventListener和.NET有一個EventHandler。兩者都有相同的目的:事件處理。但是在實施方面存在差異。可以這麼說,.NET的事件處理對於Java的事件監聽器來說是一個更高層次的抽象。
的Java的事件監聽是「標記接口所有事件偵聽器接口必須擴展」(即的MouseListener)。 .NET的EventHandler是一個委託,一個處理事件的方法的強類型指針。
更廣泛地說,事件偵聽器是同時的事件處理程序僅僅是處理事件的方法,它實現用於事件處理的接口的對象。一般來說,事件監聽器實現了一個Observer Design Pattern,事件處理程序隱藏了該模式的所有管道。因此編寫一個event listener涉及更多,並且傾向於比編寫event handler更爲口頭。
我會推薦閱讀Observer Design Pattern被微軟更好地瞭解它。
因此,實現事件處理程序,你只是一個委託分配到要處理的對象的事件。即
Button.Click += new EventHandler(MyButton_Click);
其中MyButton_Click是一個方法(也可能是在你的班上或其他地方)具有事件處理程序的簽名和實際處理該事件,即
private void MyButton_Click(object sender, EventArgs e)
{
doSomething();
}
爲了達到與事件偵聽器在同一Java中,你會寫這樣的事情(原諒我,如果我犯錯,因爲我從內存中寫它):
public class MyClass
{
Button myButton;
MyClass()
{
...
myButton.addMouseListener(new ButtonHandler());
}
public class ButtonHandler implements MouseListener
{
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseClicked(MouseEvent e)
{
doSomething("Mouse clicked", e);
}
}
}
當然,也有實施日很多方面是常見的觀察者模式,包括在類本身,內部類,匿名類,適配器等中實現EventListener接口。但是這應該證明這一點。
相關問題
- 1. EventListener與長碼失敗,爲什麼?
- 2. 什麼是第一個 - Command或EventHandler?
- 3. AngularJS有什麼弱點(與JQuery相比)?
- 4. Java包與.NET相比有什麼用?
- 5. 與css相比,xsl需要什麼?
- 6. 與其他方法相比,opencpu.org的意圖是什麼?
- 7. 什麼是循環/賦值與C相比變慢?
- 8. MonoDevelop:與「資源」相比,構建操作「內容」是什麼?
- 9. 什麼是WPF,它與WinForms相比如何?
- 10. EWS:與所有標識符相比,ItemId是什麼?
- 11. Embperl中%mdat(與%udat相比)的用途是什麼?
- 12. 與log(n)相比,log(n^2)的大O是什麼?
- 13. 什麼是Web框架?它與LAMP相比如何?
- 14. 與迭代器相比,生成器的好處是什麼?
- 15. 與null,null相比,爲什麼不是零日期?
- 16. 爲什麼相比MyISAM
- 17. 爲什麼PHP DateTime對象與對比運營商相比
- 18. 與CAS(比較和交換)相比,LL/SC有什麼優勢?
- 19. 爲什麼我無法使用EventHandler處理EventHandler <XXX>?
- 20. 與Toolkit.getDefaultToolkit()。getImage()相比,ImageIO.read()爲什麼這麼慢?
- 21. 什麼是化石的典型工作流程,尤其是與git相比?
- 22. 與evt.preventDefault()相反的是什麼?
- 23. 與IDE相關的「vi」是什麼?
- 24. 與webmin相當的Java是什麼?
- 25. 與void標籤相反的是什麼?
- 26. 與此相當的mysqli是什麼?
- 27. 與此preg_replace相當的Java是什麼?
- 28. 與jQuery相當的是什麼?
- 29. 與hasFields相反的是什麼?
- 30. 與main()相當的Objective-C是什麼?
我不明白這個問題。 AFAIK,'EventListener'用於跟蹤。 (當你提供更具體的細節時,我會倒退) – leppie 2012-07-13 14:45:48