【问题标题】:How to perform an action programmatic like action performed of JButton?如何执行类似于 JButton 执行的动作的编程动作?
【发布时间】:2012-06-13 15:57:55
【问题描述】:
我有一个扩展 AbstractAction 的 actionSave 类。我将它用于保存按钮。我想在其他地方运行与按钮相同的瞬间。
我得出结论如下使用它,但我不知道该传递什么作为参数?
model.getActionSave().actionPerformed("what should i add here for action event");
【问题讨论】:
标签:
java
swing
jbutton
abstraction
【解决方案1】:
将actionPerformed()方法的代码提取到另一个不带参数的方法中,并改为调用该方法:
public void actionPerformed(ActionEvent e) {
save();
}
public void save() {
...
}
...
model.getActionSave().save();
【解决方案2】:
只需创建您自己的ActionEvent,它有一个公共构造函数。例如
model.getActionSave().actionPerformed(
new ActionEvent( this, ActionEvent.ACTION_PERFORMED, "Save" )
);
如果你是例如测试您的 UI,您还可以选择通过 API 执行单击按钮:
button.doClick();
但总的来说我更喜欢第一种方法,并避免与 UI 耦合