【问题标题】: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 耦合

      【讨论】:

        猜你喜欢
        • 2011-06-25
        • 1970-01-01
        • 2013-04-14
        • 2016-11-02
        • 2015-12-07
        • 2017-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多