拖动鼠标时出现问题或设置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
答案 0 :(得分:2)
但是我在负坐标中拖动鼠标
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(...)方法。