【发布时间】:2020-12-07 04:59:36
【问题描述】:
我有一个显示各种项目的组合框。我想根据鼠标指针下的项目更改工具提示文本。由于我无法为每个项目设置工具提示,因此我需要更改组合框的工具提示。
如何获取鼠标指针下的项目?我可以设置一个事件来跟踪鼠标移动,然后为鼠标获取点,但是我找不到在组合中获取与点位置匹配的项目的方法。
一棵树有这个:
private class KeyTreeMouseMoveListener implements MouseMoveListener
{
@Override
public void mouseMove( MouseEvent event )
{
TreeItem item = tree.getItem( new Point( event.x, event.y ) );
}
}
但我找不到用于组合框的类似方法。
类似:
private class ComboMouseMoveListener implements MouseMoveListener
{
@Override
public void mouseMove( MouseEvent event )
{
int index = combo.getIndex( new Point( event.x, event.y ) );
}
}
会很好:-)
【问题讨论】:
-
由于组合使用本机控件,这可能是不可能的。
-
是的,我是这么认为的。
-
为了让它更有趣,工具提示仅在组合框“关闭”时显示。如果单击组合框并展开,则不会显示工具提示。
-
这在不同的平台上也会表现得非常不同。 macOS 组合与 Windows 组合完全不同。您还可以查看
CCombo,它主要是 SWT 代码而不是本机代码。 -
仍然是相同的行为,仅当组合框关闭时才显示提示信息。因此,即使我可以热跟踪鼠标并获取底层项目,工具提示也不会显示