SWT:根据插入符在StyledText控件中的位置定位对话框

时间:2010-10-13 17:19:30

标签: swt

我有SWT应用程序,它是一组包含各种控件的组,包括StlyedText小部件。它们都是使用表单布局布局的。

我想在StyledText内部的插入符号正下方显示一个对话框。但是,我必须相对于父shell定位对话框。

我的第一个想法是获取shell的位置加上StyledText的位置加上插入符的偏移量。当我尝试获取StyledText的位置时,它会显示0,0(我假设因为我的布局选择,表单布局)。我没有看到从FormData获取位置的好方法(它似乎是计算的)。

我能够获得鼠标光标的位置,但我希望在用户输入的内容下正确。

有人有什么想法吗?

1 个答案:

答案 0 :(得分:2)

为了获得实际位置,应该使用函数toDisplay()。例如:

Point displayPoint = myText.toDisplay(sqlText.getLocation());

这让我到了文本的位置。然后我添加了插入位置,以便将对话框窗口移动到正在写入的文本行:

Point caretLocation = myText.getCaret().getLocation();
Point calcPoint = new Point(displayPoint.x+caretLocation.x, displayPoint.y+caretLocation.y);

然后我使用该位置来定位我的对话窗口。