如何在 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
会替换默认值,从而导致不显示任何工具提示。
这是一个 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
会替换默认值,从而导致不显示任何工具提示。