使用 JTextField 的对象调用 actionPerformed

Call actionPerformed of a JTextField using its object

我有一个名为 SearchBoxjavax.swing.JTextField,带有一个 actionPerformed 事件。

public void SearchBoxActionPerformed(java.awt.event.ActionEvent evt){
     //TODO
}

我想做的是通过将 JTextField 对象作为参数传递,从另一个 class 中的另一个方法调用上述方法。

import javax.swing.JTextField;

public class Program {

    public static synchronized void QuickSearchResults(JTextField textBox) {
        /*
         * I want to call ActionPerformed method of textBox if it has any.
         */
    }
}

Please note that calling the method name directly is not an option. If I pass 3 different JTextField objects, the relevant ActionPerformed methods should be called.

有办法实现吗?我已经尝试使用,

textBox.getActions();
textBox.getActionListeners();

但并不顺利,现在我又回到了原点。

多谢指教!

使用此代码

public static synchronized void QuickSearchResults(JTextField textBox) {
    /*
     * I want to call ActionPerformed method of textBox if it has any.
     */
    textBox.addActionListener(e->{
        //Do what you want
    });
}

JTextField#postActionEvent 将触发字段 ActionListeners,这就是我假设您正在尝试做的事情

public class Program {

    public static synchronized void QuickSearchResults(JTextField textBox) {
        textBox.postActionEvent();
    }
}

我已经找到了实现这一目标的方法,但它肯定不是最好的。

public static synchronized void QuickSearchResults(JTextField textBox) {
    ActionListener actions[] = textBox.getActionListeners();
    for (ActionListener x : actions) {
        x.actionPerformed(null);
    }
}

在这种情况下,只有 ActionListener 被调用,但所有这些都已使用 addActionListener(ActionListener l) 添加到 JTextField

正如我上面所说,这可能不是最好的方法,但可以解决问题。