Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中使用鼠标标记绘图时出现问题_Java_Swing_Mouseevent - Fatal编程技术网

在Java中使用鼠标标记绘图时出现问题

在Java中使用鼠标标记绘图时出现问题,java,swing,mouseevent,Java,Swing,Mouseevent,当我拖动鼠标时,绘制或设置JPanel的大小时出现问题, 我设置的单击位置和大小取决于拖动位置(X和Y)绘制的可调整大小的矩形(JPanel) 但当我在点击的负坐标中拖动鼠标(开始绘图)时,它消失了 这里有更好的解释 但当我在负坐标中拖动鼠标时 您的宽度/高度计算始终假定您正方向拖动鼠标 您需要使用两点的绝对值: int width = Math.abs(rSX - rX); int height = Math.abs(rSY - rY); rectanguloDefault.setBound

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

但当我在点击的负坐标中拖动鼠标(开始绘图)时,它消失了

这里有更好的解释

但当我在负坐标中拖动鼠标时

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

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

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(…)方法进行此操作。

MouseEvent
给出生成事件的组件坐标空间内的鼠标位置时,为什么要使用
MouseInfo.getPointerInfo()
!?考虑提供一个说明你的问题的方法。这不是一个代码转储,而是您正在做的一个示例,它突出了您所遇到的问题。这将减少混乱和更好的响应。好的,我会的,我忘了可以用mouseEvent获得位置:p这已经发生了
 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);