区分Java JTextArea中的拖动和选择

时间:2011-07-22 15:23:17

标签: java swing draggable mouseevent jtextarea

我的Java应用程序有几个JTextAreas用户可以移动。我通过向它添加鼠标移动拖动侦听器来实现此目的。

  public void mouseDragged(MouseEvent e) {
    int deltaX = e.getXOnScreen() - screenX;
    int deltaY = e.getYOnScreen() - screenY;

    setLocation(myX + deltaX, myY + deltaY);
  }

当用户想要在JTextArea中选择文字以及何时想要将其拖动时,我遇到了区分问题。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

我会使用修饰符,例如 control e.isControlDown()或其他鼠标按钮来拖动组件。

答案 1 :(得分:1)

您可能希望处理第一个鼠标按下,检查文本是否被选中。如果鼠标指针位于文本上,则将其设置为一种状态,以将其标识为拖动。

答案 2 :(得分:1)

使用viewToModel()获取压点的插入位置。检查插入位置是否在getSelectionStart()和getSelectionEnd()之间。如果它在选定区域开始拖动。