我有一个用于切换视角的工具栏。工具栏中的每个按钮都会打开不同的视角。我想强调用户感觉当时打开的东西,我想把我的按钮用作状态“DOWN”和“UP”的切换。我用来向工具栏添加新BaseActions的代码:
ToolBarManager toolBarManager = new ToolBarManager();
coolBar.add(toolBarManager);
toolBarManager.add(ordersDownload);
和我的BaseAction的部分代码,它将按钮行为更改为切换:
public class BaseAction implements IAction {
@Override
public int getStyle() {
return SWT.TOGGLE;
}
在IAction内部有一个方法boolean isChecked
,但是当它点击工具栏按钮时,它的状态被反转(DOWN - > UP,UP - > DOWN),它总是不起作用。我不希望在状态为DOWN的同时有多个Button(Toggle),所以我想以某种方式调用所有按钮的状态UP并且只留下状态为DOWN的一个。
答案 0 :(得分:0)
好的,它已部分解决了。正如greg-449建议IAction.AS_RADIO_BUTTON应该用于IAction风格。从工具栏中删除了分隔符(因为它们extends AbstractGroupMarker
)后,总有一个切换为DOWN(当鼠标单击时,所有其他切换都设置为UP)。现在我需要以编程方式切换切换,我使用:
ActionContributionItem lItem = (ActionContributionItem)Facade.toolbar.getItems()[1];
lItem.getWidget().notifyListeners(SWT.Selection, new Event());
切换到另一个视角(这意味着我的IAction->runWithEvent
功能被正确调用)但点击的切换没有切换(未设置为DOWN,之前使用的切换保持DOWN)