我经常遇到这种注册动作监听器的方式.
虽然我最近一直在使用这种方法,但我不明白这是怎么回事
这是一个:{
submit=new JButton("submit");
submit.addActionListener(new ActionListener(){ // line 1
public void actionPerformed(ActionEvent ae) {
submitActionPerformed(ae);
}
}); //action listener added
Run Code Online (Sandbox Code Playgroud)
调用的方法:
public void submitActionPerformed(ActionEvent ae) {
// body
}
Run Code Online (Sandbox Code Playgroud)
在这个方法中,我不需要实现ActionListener.为什么?
另外,请解释标记为代码的内容line 1.
请清楚解释2个片段.
您在技术上确实实现了ActionListener.你打电话的时候addActionListener:
submit.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent ae) {
submitActionPerformed(ae);
}
});
Run Code Online (Sandbox Code Playgroud)
您创建了一个匿名类的实例,或者一个ActionListener没有名称的类.
换句话说,上面的代码段基本上就像我们用本地内部类做的那样:
class MyActionListener implements ActionListener
{
public void actionPerformed(ActionEvent ae)
{
submitActionPerformed(ae);
}
}
submit.addActionListener(new MyActionListener());
Run Code Online (Sandbox Code Playgroud)
对于您的示例,匿名类只调用您的一个成员方法,submitActionPerformed.这样,您的方法可以具有稍微更具描述性的名称actionPerformed,并且除了ActionListener之外,它还使其可以在类中的其他位置使用.
| 归档时间: |
|
| 查看次数: |
1481 次 |
| 最近记录: |