我該如何執行?它可以跨多個程序集工作嗎?如果不是,我該如何讓它工作?與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. 什麼是第一個 - Command或EventHandler?
- 2. 與css相比,xsl需要什麼?
- 3. 與其他方法相比,opencpu.org的意圖是什麼?
- 4. 什麼是node.js與python相比的真實生活用途
- 5. MonoDevelop:與「資源」相比,構建操作「內容」是什麼?
- 6. 與null,null相比,爲什麼不是零日期?
- 7. 與log(n)相比,log(n^2)的大O是什麼?
- 8. 什麼是Web框架?它與LAMP相比如何?
- 9. EWS:與所有標識符相比,ItemId是什麼?
- 10. Embperl中%mdat(與%udat相比)的用途是什麼?
- 11. 什麼是WPF,它與WinForms相比如何?
- 12. 什麼是循環/賦值與C相比變慢?
- 13. 與main()相當的Objective-C是什麼?
- 14. 與此preg_replace相當的Java是什麼?
- 15. 與webmin相當的Java是什麼?
- 16. 與void標籤相反的是什麼?
- 17. 與evt.preventDefault()相反的是什麼?
- 18. 與JDBC DatabaseMetaData相當的Python是什麼?
- 19. 與整數比較相比,爲什麼字符串比較如此之快?
- 20. 爲什麼「新的EventHandler(Handler)」在.Net中?
- 21. EventHandler和ElapsedEventHandler有什麼區別?
- 22. 這樣使用EventHandler有什麼意義?
- 23. 什麼時候和爲什麼EventHandler要求對象是最終的?
- 24. 什麼時候/爲什麼要使用EventHandler而不是常規事件?
- 25. 這是什麼,以及什麼vimscript函數與它相關聯?
- 26. EventHandler:這段代碼是怎麼回事?
- 27. 與SQL Server 2000相比,SQL Server 2005/2008的主要優點是什麼?
- 28. 什麼是libpython3.so與從python 3.5.2源碼構建的libpython3.5m.so相比較?
- 29. 什麼是RISC-V,它與以前的RISC體系結構相比如何?
- 30. 與並行管道相比,並行管道的優勢是什麼?
我不明白這個問題。 AFAIK,'EventListener'用於跟蹤。 (當你提供更具體的細節時,我會倒退) – leppie 2012-07-13 14:45:48