我有SWT应用程序,它是一组包含各种控件的组,包括StlyedText小部件。它们都是使用表单布局布局的。
我想在StyledText内部的插入符号正下方显示一个对话框。但是,我必须相对于父shell定位对话框。
我的第一个想法是获取shell的位置加上StyledText的位置加上插入符的偏移量。当我尝试获取StyledText的位置时,它会显示0,0(我假设因为我的布局选择,表单布局)。我没有看到从FormData获取位置的好方法(它似乎是计算的)。
我能够获得鼠标光标的位置,但我希望在用户输入的内容下正确。
有人有什么想法吗?
答案 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);
然后我使用该位置来定位我的对话窗口。