我的滑块有一个子按钮小部件。我最近更改了我的gui,以发送相对于小部件的鼠标坐标,因此如果小部件位于50,50,而鼠标位于50,50,则现在将报告为0,0。
这给我的滑块带来了一些问题。当我在按钮周围拖动时,它会定位到值。
我想到的唯一解决方案是取给定的鼠标坐标,添加回按钮的绝对位置,然后减去滑块的绝对位置。
然而,我希望找到一种不需要绝对定位的解决方案。
我用来接收鼠标的绝对位置,当我这样做的时候,我把它定位成这样:
int mousePos = getOrientation() == AGUI_HORIZONTAL ?
mouseArgs.getPosition().getX() - getAbsolutePosition().getX() :
mouseArgs.getPosition().getY() - getAbsolutePosition().getY();
setValue(positionToValue(mousePos));mouseArgs提供鼠标相对于按钮的位置。而不是相对于滑块,这是需要的。
我可以获得小部件的相对位置,但我不认为这样做是可行的。
谢谢
发布于 2011-04-12 09:50:42
由于这是一个自定义GUI,我将做一些假设并重申您的问题,以确保我回答了您的问题。
您有一个滑块小部件,其中包含一个thumb小部件。用户可以单击并拖动拇指来重新定位它。GUI在本地相对空间而不是绝对屏幕空间中向小部件发送鼠标通知。您的问题是,在不使用绝对坐标的情况下,thumb小部件如何响应鼠标事件来移动自己?
您可以通过更改移动thumb小部件的责任来实现这一点。定位thumb小部件应该是滑块小部件的工作。通过这样做,您的所有坐标都可以位于滑块小部件的局部相对空间中。基本上是这样的(假设你有某种事件通知):
click_x = thumb_x + thumb_mouse_x).一般来说,父母应该对孩子的布局负责。
https://stackoverflow.com/questions/5629105
复制相似问题