我的滑块有一个子按钮小部件。我最近改变了我的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给出相对于按钮的鼠标位置。不是相对于滑块,这是需要的。
我可以获得小部件的相对位置,但我认为不会这样做。
由于
答案 0 :(得分:1)
由于这是一个自定义GUI,我将做一些假设并重述您的问题,以确保我回答您的问题。
您有一个包含拇指小部件的滑块小部件。用户可以单击并拖动拇指以重新定位它。您的GUI将鼠标通知发送到本地相对空间中的小部件而不是绝对屏幕空间。您的问题是拇指小部件如何响应鼠标事件以在不使用绝对坐标的情况下自行移动?
您可以通过更改移动拇指小部件的责任来实现此目的。应该是滑块小部件的工作来定位其拇指小部件。通过这样做,您的所有坐标都可以位于滑块小部件的本地相对空间中。基本上它就像(假设你有某种事件通知):
click_x = thumb_x + thumb_mouse_x
)。一般来说,父母应对孩子的布局负责。