【问题标题】:Enabling/Disabling actions from another action启用/禁用另一个动作的动作
【发布时间】:2013-01-17 21:13:22
【问题描述】:

我有一个名为 AddAction 的回调操作。当按下 AddAction 时,我希望它启用 TopComponent 上的所有组件以及禁用工具栏上的其他几个操作。然后当按下 SaveAction 时,它将数据保存到数据库中,启用其他操作并禁用 TC 上的所有组件。

现在我设置了 AddAction 来启用所有组件,但我不知道如何禁用其他操作。

添加操作

@ActionID(
    category = "1",
id = "com.waudware.Actions.AddAction")
@ActionRegistration(
    iconBase = "com/waudware/Actions/Icons/add.png",
    displayName = "#CTL_AddAction",
    key = "AddAction")
@ActionReferences({
    @ActionReference(path = "Menu/Record", position = 3333),
    @ActionReference(path = "Toolbars/AddEditDelete", position = 100)
})
@Messages("CTL_AddAction=Add")
public final class EditAction implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {
    }
}

顶部组件

public RouteTopComponent() {
        initComponents();
        setName(Bundle.CTL_RouteTopComponent());
        setToolTipText(Bundle.HINT_RouteTopComponent());

        getActionMap().put("AddAction", new AbstractAction(){
            @Override
            public void actionPerformed(ActionEvent e) {
                addRoute(true);
            }
        });
}

private void addRoute(boolean add) {
        txtRoute.setEnabled(add);
    }

【问题讨论】:

    标签: java swing netbeans action netbeans-platform


    【解决方案1】:

    【讨论】:

    • 我想我可能误解了答案,但是 NetBeans 平台不使用摇摆动作,它会自动生成一个实现 ActionListener 的类,据我所知它没有setEnabled() 方法。
    【解决方案2】:

    我做什么:

    getActionMap().get("AddAction").setEnabled(true | false);
    

    您还可以启用/禁用/隐藏整个工具栏

    Toolbar toolbar;
    
    toolbar = ToolbarPool.getDefault().findToolbar("toolbarName");
    if (toolbar != null) {
        toolbar.setVisible(true | false);    // show / hide
        toolbar.setEnabled(true | false);    // enable / disable
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多