使用 JTextField 的对象调用 actionPerformed
Call actionPerformed of a JTextField using its object
我有一个名为 SearchBox 的 javax.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
将触发字段 ActionListener
s,这就是我假设您正在尝试做的事情
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
。
正如我上面所说,这可能不是最好的方法,但可以解决问题。
我有一个名为 SearchBox 的 javax.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
将触发字段 ActionListener
s,这就是我假设您正在尝试做的事情
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
。
正如我上面所说,这可能不是最好的方法,但可以解决问题。