当我拖动鼠标时,绘制或设置 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/