java中如何在子类中为父类中的组件添加ActionListener

问题描述 投票:0回答:1

我正在用 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 是我的代码中多个子类的父类。

java inheritance actionlistener
1个回答
0
投票

不太确定您要做什么。创建按钮时应将 ActionListener 添加到按钮。

对于一般监听者,你可以编写如下代码:

buttonCancel.addActionListener((e) ->
{
    JButton button = (JButton)e.getSource();
    Window window = SwingUtilities.windowForComponent( button );
    window.dispose();
});
© www.soinside.com 2019 - 2024. All rights reserved.