Yas*_*jaj 2 java swing dispose jdialog 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();
}
Run Code Online (Sandbox Code Playgroud)
这是回答者发布的代码(这里是问题的链接)
这是我在自己的代码中所做的事情:
buttonCancel.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
dispose();
}
});
Run Code Online (Sandbox Code Playgroud)
但我真的很关心上面的答案.我做错了什么或不改变任何事情,如果这样做?如果它没有影响,你会知道为什么这个人使用中间方法回答了吗?
谢谢
我假设你在MyDialog
class中包含哪个extendsJDialog
请考虑以下代码.
exit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
exitActionPerformed(evt);
}
});
Run Code Online (Sandbox Code Playgroud)
您已经创建了一个匿名内部类java.awt.event.ActionListener.如果你this在匿名内部类中使用关键字,它允许自己访问它,但不是 MyDialog class你想象的那样.因此,this.dispose()方法不可用.但你可以像访问它一样访问它MyDialog.this.dispose();
看看你的第二个例子
buttonCancel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dispose();
}
});
Run Code Online (Sandbox Code Playgroud)
当然,ActionListener这里也是一个匿名的内部类.但是它允许访问它包含类的方法.所以,这里可以使用dispose()方法.