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

标签 java swing mouseevent

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

相关文章:

java - Maven:从命令行执行并在配置中多次执行

java - 使用 Java 接口(interface)作为参数强制执行严格(更好)类型安全的想法

java - JProgressBar 不可见,但进度正在正确更新

Java Midi Sequencer - 使用播放头进行音符播放

python-3.x - 如何使该 Sprite 可点击,然后关闭它以便渲染新 map ?

javascript - 如何计算进度条 x 轴鼠标被点击的位置?

java - JSP EL 标记未正确解析?

java - 在 Android 中压缩图像以上传到服务器的过程

java - 多个 JPanel 在 JLayeredPane 中绘制图像

matlab - Matlab GUI 中带有 slider 的 WindowScrollWheelFcn