[英]How does this method work?
我經常遇到這種注冊動作監聽器的方式。
雖然我最近一直在使用這種方法,但我不明白這是怎么回事
這是一個:{
submit=new JButton("submit");
submit.addActionListener(new ActionListener(){ // line 1
public void actionPerformed(ActionEvent ae) {
submitActionPerformed(ae);
}
}); //action listener added
調用的方法:
public void submitActionPerformed(ActionEvent ae) {
// body
}
在這個方法中,我不需要實現ActionListener。 為什么?
另外,請解釋標記為line 1
的代碼。
請清楚解釋2個片段。
您在技術上確實實現了ActionListener。 當你調用addActionListener
:
submit.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent ae) {
submitActionPerformed(ae);
}
});
您創建了一個匿名類的實例,或一個實現沒有名稱的ActionListener
的類。
換句話說,上面的代碼段基本上就像我們用本地內部類做的那樣 :
class MyActionListener implements ActionListener
{
public void actionPerformed(ActionEvent ae)
{
submitActionPerformed(ae);
}
}
submit.addActionListener(new MyActionListener());
對於您的示例,匿名類只調用您的一個成員方法submitActionPerformed
。 這樣,您的方法可以具有比actionPerformed
更具描述性的名稱,並且除了ActionListener之外,它還使其可以在類中的其他位置使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.