最近,我一直在努力让我的 gui 看起来不错,其中一部分是实现我自己的标题栏、最大化按钮、最小化按钮等。
我在拖动时遇到问题,我希望能够通过单击 JFrame 中的任意位置来拖动它。
我试图创建一个 mousemotionlistener 来处理它,但是当我使用它时它会滑倒。正如我尝试将窗口拖到某个位置一样,但它似乎正在跳过对 mouseDragged 的调用并尝试调用 mouseMoved 。
这是我的代码
public class MouseWindowDragManager implements MouseMotionListener{
private JFrame frame;
int prevPosX = -1;
int prevPosY = -1;
public MouseWindowDragManager(JFrame frame){
this.frame = frame;
}
@Override
public void mouseDragged(MouseEvent e) {
int newX = (frame.getLocation().x + (e.getXOnScreen() - prevPosX));
int newY = (frame.getLocation().y + (e.getYOnScreen() - prevPosY));
frame.setLocation(newX, newY);
prevPosX = e.getXOnScreen();
prevPosY = e.getYOnScreen();
}
@Override
public void mouseMoved(MouseEvent e) {
prevPosX = e.getXOnScreen();
prevPosY = e.getProperty("apple.awt.draggableWindowBackground", true);tYOnScreen();
}
}