我们是否需要在 ActionListener 中使用 "dispose()" 的中间方法?
Do we need to use an intermediate method to "dispose()" in an ActionListener?
我在 SO 上找到了这个答案并且对此感到困惑。
我们有一个问题,有人想知道如何在 ActionListener 中处理 JDialog。
try this way:
exit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
exitActionPerformed(evt);
}
});
and then
private void exitActionPerformed(java.awt.event.ActionEvent evt) {
this.dispose();
}
这是回答者发布的代码(here's问题的link)
这是我在自己的代码中所做的事情:
buttonCancel.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
dispose();
}
});
但我真的很关心上面的答案。我是在做错什么,还是这样做不会改变任何事情?如果没有影响,你知道那个人为什么用中间方法回答吗?
谢谢
两者效果相同
该中间方法可能用于在处理之前执行一些操作。您的版本也可以执行此类操作,但使用中间方法可能会提高可读性。
I assume that your contains in MyDialog class
which extends
JDialog
考虑以下代码。
exit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
exitActionPerformed(evt);
}
});
您已经创建了 java.awt.event.ActionListener
的匿名内部 class。如果您在匿名内部 class 中使用 this
关键字,它允许自己访问它,但不能像您预期的那样访问 MyDialog
class
。因此 this.dispose()
方法不可用。但您可以通过 MyDialog.this.dispose();
访问它
看你的第二个例子
buttonCancel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dispose();
}
});
当然ActionListener
这里也是匿名内class。但它允许访问它包含 class 的方法。所以,这里可以使用dispose()
方法。
我在 SO 上找到了这个答案并且对此感到困惑。
我们有一个问题,有人想知道如何在 ActionListener 中处理 JDialog。
try this way:
exit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
exitActionPerformed(evt);
}
});
and then
private void exitActionPerformed(java.awt.event.ActionEvent evt) {
this.dispose();
}
这是回答者发布的代码(here's问题的link)
这是我在自己的代码中所做的事情:
buttonCancel.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
dispose();
}
});
但我真的很关心上面的答案。我是在做错什么,还是这样做不会改变任何事情?如果没有影响,你知道那个人为什么用中间方法回答吗?
谢谢
两者效果相同
该中间方法可能用于在处理之前执行一些操作。您的版本也可以执行此类操作,但使用中间方法可能会提高可读性。
I assume that your contains in MyDialog
class
whichextends
JDialog
考虑以下代码。
exit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
exitActionPerformed(evt);
}
});
您已经创建了 java.awt.event.ActionListener
的匿名内部 class。如果您在匿名内部 class 中使用 this
关键字,它允许自己访问它,但不能像您预期的那样访问 MyDialog
class
。因此 this.dispose()
方法不可用。但您可以通过 MyDialog.this.dispose();
看你的第二个例子
buttonCancel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dispose();
}
});
当然ActionListener
这里也是匿名内class。但它允许访问它包含 class 的方法。所以,这里可以使用dispose()
方法。