我从我的窗口移除了标题栏和边框,现在我正在尝试使用此代码单击并移动时移动它:
void mouseDrag(const MouseEvent& event) override {
int x = event.getScreenPosition().x - event.getPosition().x;
int y = event.getScreenPosition().y - event.getPosition().y;
setTopLeftPosition(x, y);
}
它确实移动但我有两个问题:1)我必须单击2次然后它开始移动2)当我开始移动它时,它变空(只是灰色)其中没有组件。我该如何解决这个问题?
[编辑]
我对这段代码更加接近:
if (event.eventComponent == this) {
int x = event.getScreenPosition().x - lastMouseDownX;
int y = event.getScreenPosition().y - lastMouseDownY;
getParentComponent()->setTopLeftPosition(x, y);
}
现在窗户移动时没有变灰,但是运动闪烁了很多,并且#34;跳跃"位置。
答案 0 :(得分:0)
实际上非常简单。我所要做的就是删除这一行:
addMouseListener(this, true);
来自主gui组件的构造函数。尽管如此,我还不知道为什么这条线会使窗户运动闪烁。如果有人知道请发表评论。