mousedragged事件时控件闪烁
在使用Java Swing做程序时,使用MouseMotionListener的mousedragged鼠标事件,但拖动时,元素位置闪烁变化。

输出了位置数值查看发现位置会往左上角“瞬移”。
import java.awt.event.MouseMotionListener;
public void mouseDragged(MouseEvent e) {
//鼠标拖动
// TODO Auto-generated method stub
panel_lable.setLocation(e.getX(),e.getY());//面板位置随鼠标拖动变化,
System.out.println(e.getX()+","+e.getY());
}
解决方法
因为我用的是awt的组件,需要使用双缓冲来避免画面的抖动。修改后的代码如下:
public void mouseDragged(MouseEvent e) {
//鼠标拖动
// TODO Auto-generated method stub
panel_lable.setLocation(e.getX()+(int)panel_lable.getLocation().getX(),e.getY()+(int)panel_lable.getLocation().getY());//面板位置随鼠标拖动变化,
System.out.println(e.getX()+","+e.getY());
}
修改后抖动的问题就没有了。
当在Java Swing程序中监听mousedragged事件时,控件可能出现闪烁现象。原因是元素位置在更新时发生了瞬移。通过采用双缓冲技术可以有效解决这一画面抖动问题,确保控件拖动平滑无闪烁。
3207

被折叠的 条评论
为什么被折叠?



