我正在用 java 编写代码编辑器,并在尝试将 ActionListener 添加到父类中实现的按钮时遇到问题。 ActionListener 实现应该在子类中。
我这样写了父类DialogCreator和子类ClassCreator。
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
class DialogCreator extends JFrame implements ActionListener {
protected JButton buttonCancel;
protected JDialog jDialog;
public DialogCreator() {
jDialog = new JDialog(this ,"title", true);
jDialog.setLayout(null);
jDialog.setSize(400,400);
buttonCancel = new JButton("Cancel");
buttonCancel.setBounds(20,20,100,30);
jDialog.add(buttonCancel);
jDialog.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
}
}
class ClassCreator extends DialogCreator{
public ClassCreator(){
super();
buttonCancel.addActionListener((e)->jDialog.dispose());
}
}
public class Main {
public static void main(String[] args) {
new ClassCreator();
}
}
程序编译成功,我希望在单击“取消”按钮时关闭 jDialog。但什么也没发生。那你能告诉我我哪里做错了吗? ClassCreator 是我的代码中多个子类的父类。
不太确定您要做什么。创建按钮时应将 ActionListener 添加到按钮。
对于一般监听者,你可以编写如下代码:
buttonCancel.addActionListener((e) ->
{
JButton button = (JButton)e.getSource();
Window window = SwingUtilities.windowForComponent( button );
window.dispose();
});