1

我想以编程方式设置一个 Eclipse 插件操作(按钮),如下所示:

在此处输入图像描述

例如,如果用户按下它,我不希望它在某些条件下关闭。

此代码在此处创建操作(按钮):

class MyAction extends Action {
    public MyAction() {
        super(NAME, IAction.AS_CHECK_BOX);
    }

    ...
    Thread.sleep(100); wait a little bit incase there is a thread update issue
    if (condition)
        setChecked(true); // does not work, it does not force the button to appear as depressed. It just keeps toggling.
    ...
}

由于某种原因 setChecked(true) 不起作用。

4

1 回答 1

0

我相信这里的问题是你setCheckedAction.run(). 由于单击复选框的效果之一是选中它,因此您正在偷偷地尝试取消正在进行的操作。事实上,我敢打赌,框架代码集在Action.run()返回后会检查为 true,因此它会阻碍您的更改。

Action有一种方法可以让您以更明确的方式控制它。.run()与其执行,不如执行.runWithEvent(Event)。此函数传入一个 Event 对象,您可以使用该对象进行更细粒度的控制。

在这种情况下,我认为您想设置Event.doit为 false。从文档:

将此字段设置为 false 将取消操作。

另外的选择

根据您的条件的计算方式,您可能希望在复选框更改时抢先启用/禁用它。这样,您还可以阻止工具提示或类似内容来解释它被禁用的原因。

于 2013-02-14T14:22:31.000 回答