java - 使用 setToolTip() 方法更改后,操作上的按键绑定(bind)工具提示消失

标签 java eclipse eclipse-plugin tooltip jface

我在 java 类中定义了一个操作,并在 plugins.xml 文件中进行了键绑定(bind)和绑定(bind)。当我第一次启动我的应用程序时,我在工具提示中看到我的按键绑定(bind)(这就是它应该的样子),但是在使用 setToolTip(String toolTip) 更改工具提示后,按钮绑定(bind)从工具栏操作按钮中消失,但按键绑定(bind)仍然有效。我如何再次显示它,或者如何获取我的操作的特定键绑定(bind),因为 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");
         }
     }
  }

这是在plugin.xml中定义的方式

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

最佳答案

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

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

在 View 或编辑器中,这将获取绑定(bind)服务:

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

你可以在其他地方使用

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

关于java - 使用 setToolTip() 方法更改后,操作上的按键绑定(bind)工具提示消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28165116/

相关文章:

android - J2ME 和 Android 开发的 IDE 优缺点

java - 从里面的类找到一个 jar 的路径?

java - 在 createExecutableExtension 中调用参数化构造函数

java - 为什么 CustomProjectAggregationOperation 在 SpringMongoTemplate 中不起作用

java - IllegalFormatConversionException : c ! = java.lang.string(使用 printf 时)

java - 给定一个数 N,N 是否可以表示为两个或多个连续的完全平方数之和?

eclipse - 在 Eclipse 的 Aptana 插件中调试 FTPS SSL 验证

eclipse - 使用 Eclipse Neon 的 SSH 和 Egit

java - 方法 split(String) 未为类型 String 定义

java - 如何模拟 ResourceBundle.getString()?