有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用方法setToolTip()在中更改后,操作上的java Keybinding工具提示消失

我在java类中定义了一个动作,并在插件中进行了键绑定和绑定。xml文件。当我第一次启动我的应用程序时,我在tooltip中看到了我的keybinding(假设是这样的),但在使用setToolTip(字符串tooltip)更改tooltip后,按钮绑定从工具栏操作按钮中消失,但keybinding仍然有效。如何再次显示它,或者如何获取操作的特定键绑定,因为getAccelerator()方法返回0。 这是我的动作类代码

public class SampleAction extends DiagramAction{


public static final String ID = "sampleFunction";
 private void initData() {
        setId(ID);
        setText(Messages.cmd_AddBranchAction_text);
        setToolTipText(Messages.cmd_AddBranchAction_desc);
    }
    @Override
      public void refresh() {
         super.refresh();
       //checks if button in toolbar is enabled
          boolean isEnabled = isEnabled();
        if(isEnabled) {
            setToolTipText("Do something");
        } else {
            setToolTipText("Node not selected, select a node");
         }
     }
  }

这就是它在插件中的定义。xml

 <key
        commandId="com.sample.sampleFunction"
        contextId="org.eclipse.ui.context.window"
        schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
        sequence="M1+A" />

共 (1) 个答案

  1. # 1 楼答案

    您可以使用IBindingService获取命令键绑定的文本:

    TriggerSequence activeBinding = bindingService.getBestActiveBindingFor("command id");
    if (activeBinding != null && !activeBinding.isEmpty()) {
        String acceleratorText = activeBinding.format();
    }
    

    在视图或编辑器中,这将获得绑定服务:

    IBindingService service = (IBindingService)getSite().getService(IBindingService.class);
    

    其他地方你可以使用

    IBindingService bindingSvc = (IBindingService)PlatformUI.getWorkbench().getAdapter(IBindingService.class);