gpt4 book ai didi

java - 是否可以以编程方式将 Eclipse RCP 按钮设置为 'checked' ?

转载 作者:行者123 更新时间:2023-12-01 04:51:44 27 4
gpt4 key购买 nike

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

enter image description here

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

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

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) 不起作用。

最佳答案

我认为这里的问题是您在 Action.run() 内部调用 setChecked 。由于单击复选框的效果之一是选中它,因此您会在操作进行时偷偷地尝试取消该操作。事实上,我敢打赌,在 Action.run() 返回后,框架代码设置为 true,因此它会阻碍您的更改。

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

在这种情况下,我想你想设置 Event.doit为假。来自文档:

Setting this field to false will cancel the operation.

另一种选择

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

关于java - 是否可以以编程方式将 Eclipse RCP 按钮设置为 'checked' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14860851/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com