0

我从窗口中删除了标题栏和边框,现在我试图在单击并使用以下代码移动时使其移动:

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);
}

现在窗口移动而没有变灰,但移动闪烁很多并且“跳跃”位置。

4

1 回答 1

0

其实很简单。我所要做的就是删除这一行:

addMouseListener(this, true);

来自主 gui 组件的构造函数。不过,我不知道为什么这条线会使窗口移动闪烁。如果有人知道请发表评论。

于 2017-03-24T15:02:40.367 回答