当使用MouseListener/MouseMotionListener移动对话框时,如何减少Java摆动抖动/闪烁/抖动?

当使用MouseListener/MouseMotionListener移动对话框时,如何减少Java摆动抖动/闪烁/抖动?,java,swing,drag-and-drop,buffer,Java,Swing,Drag And Drop,Buffer,我构建了一个Java Swing对话框,没有任何装饰。我已经通过MouseListener和MouseMotionListener接口使用拖放实现了对话框移动 但是,在测试期间,对话框在移动时会闪烁/抖动/抖动。我希望拖放运动是流畅的/平滑的 我正在WindowsXP(SP3)上运行JDK1.6.0.21 以下是一些示例代码: @Override public void mouseDragged(MouseEvent event) { Component component = even

我构建了一个Java Swing对话框,没有任何装饰。我已经通过MouseListener和MouseMotionListener接口使用拖放实现了对话框移动

但是,在测试期间,对话框在移动时会闪烁/抖动/抖动。我希望拖放运动是流畅的/平滑的

我正在WindowsXP(SP3)上运行JDK1.6.0.21

以下是一些示例代码:

@Override public void mouseDragged(MouseEvent event) { Component component = event.getComponent(); if (this != component) { return; } int modifiers = event.getModifiersEx(); // This means no Ctrl/Shift/Alt/Meta. if (InputEvent.BUTTON1_DOWN_MASK == modifiers) { Point point_relative_to_source = event.getPoint(); int delta_x = point_relative_to_source.x - _mouse_press_point.x; int delta_y = point_relative_to_source.y - _mouse_press_point.y; Point component_location = component.getLocation(); component_location.x += delta_x; component_location.y += delta_y; component.setLocation(component_location); } } protected Point _mouse_press_point; @Override public void mousePressed(MouseEvent event) { Object source = event.getSource(); if (this != source) { return; } System.out.println("mousePressed"); _mouse_press_point = event.getPoint(); } @Override public void mouseReleased(MouseEvent event) { Object source = event.getSource(); if (this != source) { return; } System.out.println("mouseReleased"); _mouse_press_point = null; } @凌驾 公共无效鼠标标记(鼠标事件){ Component=event.getComponent(); 如果(此!=组件){ 返回; } int modifiers=event.getModifiersEx(); //这意味着没有Ctrl/Shift/Alt/Meta。 if(InputEvent.BUTTON1\u DOWN\u MASK==修饰符){ 相对于源的点=事件。获取点(); int delta_x=相对于源的点。x-_鼠标按点。x; int delta_y=相对于源的点。y-_鼠标按点。y; 点组件_位置=组件.getLocation(); 组件_位置.x+=增量_x; 组件位置y+=增量y; 组件。设置位置(组件位置); } } 保护点(鼠标)按(点);; @凌驾 公共无效鼠标按下(鼠标事件){ Object source=event.getSource(); 如果(此!=源){ 返回; } System.out.println(“鼠标按下”); _鼠标按点=event.getPoint(); } @凌驾 公共无效MouseEvent事件(MouseEvent事件){ Object source=event.getSource(); 如果(此!=源){ 返回; } System.out.println(“鼠标释放”); _鼠标按点=空; } 你知道如何减少闪烁/抖动/抖动吗

谢谢, Arpe提供了一个可用于移动窗口的类