gpt4 book ai didi

java - 在 Java 中使用 MouseDragged 绘图时出现问题

转载 作者:行者123 更新时间:2023-12-02 04:21:54 25 4
gpt4 key购买 nike

当我拖动鼠标时,绘制或设置 JPanel 大小时出现问题,我设置的单击位置和大小取决于拖动位置(X 和 Y)绘制可调整大小的矩形(JPanel)。

private void panelMouseDragged(java.awt.event.MouseEvent evt) {                                   
rSX = (int)MouseInfo.getPointerInfo().getLocation().getX();
rSY = (int)MouseInfo.getPointerInfo().getLocation().getY();
rectanguloDefault.setBounds(rX,rY,rSX-rX,rSY-rY);
}

private void panelMousePressed(java.awt.event.MouseEvent evt) {
rX = (int)MouseInfo.getPointerInfo().getLocation().getX();
rY = (int)MouseInfo.getPointerInfo().getLocation().getY();
rectanguloDefault.setLocation(rX,rY);
}

但是当我将鼠标拖动到单击的负坐标(绘图开始)时,它就会消失。

这里有更好的解释 http://i.picasion.com/resize80/49c88c55d4c11c53c020acfcc4fc2f45.png

最佳答案

but when i drag mouse in a negative coordinate

 rectanguloDefault.setBounds(rX,rY,rSX-rX,rSY-rY);

您的宽度/高度计算始终假设您向正方向拖动鼠标。

您需要使用两点的绝对值:

int width = Math.abs(rSX - rX);
int height = Math.abs(rSY - rY);
rectanguloDefault.setBounds(rX, rY, width, height);

您的 x/y 值还需要是(rX 和 rSX)和(ry 和 rSY)中的最小值。为此,您可以使用 Math.min(...) 方法。

关于java - 在 Java 中使用 MouseDragged 绘图时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32687824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com