如何在 JFace 的 ListViewer 中获取工具提示?

How to get ToolTip in a ListViewer in JFace?

这是一个 gridLayout,其中 Available 端是 Tree Viewer,Selected 端是 ListViewer。现在我必须在右侧获得一个工具提示。我无法得到。我正在处理现有的代码库,所以我无法弄清楚他们在哪一行添加了工具提示 + 我没有找到任何关键字,如工具提示或鼠标悬停。仍然是如何实现的。 我提到了一些代码。我相信答案应该只在这里的某个地方。

 availableViewer = new TreeViewer(resultsComposite, SWT.BORDER | this.getStyle());
        availableViewer.setContentProvider(new ResAndResGroupTreeContentProvider());
        availableViewer.setLabelProvider(SelectionItemLabelProvider.getInstance());
        Tree availableResults = availableViewer.getTree();
        GridData availableResultsGridData = new GridData(SWT.FILL, SWT.FILL, true, true);
        availableResultsGridData.widthHint = LIST_WIDTH_HINT;
        availableResultsGridData.heightHint = LIST_HEIGHT_HINT;
        availableResults.setLayoutData(availableResultsGridData);
        availableViewer.getTree().addSelectionListener(new SelectionAdapter()
        {
            @Override
            public void widgetDefaultSelected(SelectionEvent e)
            {
                moveAvailableItemsToSelected();
            }
        });

这是selectionViewer的内容。

  selectedViewer = new ListViewer(resultsComposite, SWT.V_SCROLL | SWT.H_SCROLL| SWT.BORDER
            | this.getStyle());
    selectedViewer.setContentProvider(new ResAndResGroupTreeContentProvider());
    selectedViewer.setLabelProvider(new SelectionItemLabelProvider());
    org.eclipse.swt.widgets.List selectedResults = selectedViewer.getList();
    GridData selectedResultsGridData = new GridData(SWT.FILL, SWT.FILL, true, true);
    selectedResultsGridData.widthHint = LIST_WIDTH_HINT;
    selectedResultsGridData.heightHint = LIST_HEIGHT_HINT;
    selectedResults.setLayoutData(selectedResultsGridData);
    selectedViewer.addDoubleClickListener(new IDoubleClickListener()
    {
        @Override
        public void doubleClick(DoubleClickEvent event)
        {
            moveSelectedItemsToAvailable();
        }
    });
    selectedViewer.getList().addKeyListener(new KeyAdapter()
    {
        @Override
        public void keyPressed(KeyEvent e)
        {
            if (e.character == SWT.CR)
            {
                moveSelectedItemsToAvailable();
            }
        }
    });
    selectedViewer.addSelectionChangedListener(new ISelectionChangedListener()
    {
        @Override
        public void selectionChanged(SelectionChangedEvent event)
        {
            updateButtonsEnabled();
        }
    });

谢谢。

ListViewer 的基础 List 小部件无法为每个项目显示不同的工具提示。 您可以像这样为整个列表分配工具提示

listViewer.getList().setTooltipText( "..." );

但是,如果您希望每个项目都有不同的工具提示,则必须使用 TableViewer

您在左侧看到的是原生 Windows 工具提示,当项目超出水平 space 时会出现。 Table(在 Windows 上)具有相同的行为,因此您不需要明确提供工具提示。

对于具有默认工具提示的控件,例如 Windows 上的 Tree,将工具提示设置为 null 会替换默认值,从而导致不显示任何工具提示。