应该作为源传递给构造函数的内容



我有一个带有JButton的FormPanel类,它有一个ActionListener。我也有一个EventObject的子类叫做FormPanelEvent。我的问题是关于ActionListeners的actionPerformed()方法:如果我实例化FormPanelEvent,我传递FormPanel对象或JButton作为源吗?我见过其他人通过"this",但JButton不是真正的源吗?

public class FormPanel extends JPanel {
private JLabel usernameLabel, passwordLabel;
private JTextField usernameField;
private JPasswordField passwordField;
private JButton submitButton, clearButton;
private Collection<FormPanelListener> formPanelListeners = new ArrayList<>();
public FormPanel() {
... 
    submitButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            String username = usernameField.getText().trim();
            char[] password = passwordField.getPassword();
            FormPanelEvent e = new FormPanelEvent(this or submitButton)
        }
    });
...
}

这取决于您想如何处理FormPanelEvent中的FormPanel。它想要在FormPanelEvent类中提供完整的功能,然后你可以通过this,否则如果你想玩源即按钮,那么你可以通过submitButton

根据您的代码,submitButton更有可能是事件的源,因为当您单击该按钮时将引发开始事件。

你需要使提交按钮final或类的成员字段,以便有一个显式访问它的引用在那个actionListener匿名类

好运。

相关内容

  • 没有找到相关文章

最新更新