如何在JFace中的ListViewer中获取ToolTip?

时间:2015-09-24 12:49:05

标签: java swt jface treeviewer

enter image description here

这是一个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();
        }
    });

感谢。

1 个答案:

答案 0 :(得分:2)

ListViewer底层List窗口小部件无法为每个项目显示不同的工具提示。 您可以为整个列表分配工具提示,如此

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

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

您在左侧看到的是本机Windows工具提示,如果项目超出水平空间,则会显示该工具提示。 Table(在Windows上)具有相同的行为,因此您不需要明确提供工具提示。

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