我在JFrame上放了一个JLabel
在鼠标press这个JLabel时,获得当前点的坐标,和JFrame的位置坐标
然后,drag这个JLabel时候,根据当前点的坐标变化,来设置JFrame的位置...
应该是获得坐标往往是point类型的,不够精确吧...所以,效果非常不理想,不知道各位有啥好办法
按下鼠标时的操作
private void jLabel9MousePressed(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
this.setPoint = new Point(evt.getX(), evt.getY());
location = new Point2D.Double(this.getLocation().getX(), this.getLocation().getY());
} 鼠标拖拽时的操作
private void jLabel9MouseDragged(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
this.setLocation((int)(this.location.x + (evt.getX() - this.setPoint.x)), (int)(this.location.y + (evt.getY() - this.setPoint.y)));
}问题补充
楼上正解啊....不过,我觉得有些怪异...是我理解的不对吧?
这样,过程A:一直press鼠标,时而drag,时而停下...
firstPoint是鼠标press的时候,得到的,在过程A中,一直不变;
location是drag时得到的,一直都在变化,当然evt获得的坐标也是不断变化的。
也就是说,location也应该在press的时候获得啊,为什么那样偏偏不对?
问题补充
为什么location 不在press时得到的?
这样做正确,可是感觉不合理啊。
问题补充
偶太笨喽...原来是相对位置的变化引起绝对位置的变化哦....搞懂了...3Q~gml520