区分Java中的拖动和选择';s JTextArea

区分Java中的拖动和选择';s JTextArea,java,swing,draggable,mouseevent,jtextarea,Java,Swing,Draggable,Mouseevent,Jtextarea,我的Java应用程序有几个用户可以移动的jtextarea。我通过向其添加鼠标运动拖动侦听器来实现这一点 public void mouseDragged(MouseEvent e) { int deltaX = e.getXOnScreen() - screenX; int deltaY = e.getYOnScreen() - screenY; setLocation(myX + deltaX, myY + deltaY); } 我在区分用户何时想要在JT

我的Java应用程序有几个用户可以移动的
jtextarea
。我通过向其添加鼠标运动拖动侦听器来实现这一点

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

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

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

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

您可能要向下移动第一个鼠标,请检查是否选中了文本。如果鼠标指针在文本上,则将其设置为一种状态以将其标识为拖动。

我将使用一个修改器,例如control
e.isControlDown()
,或另一个鼠标按钮来拖动组件。

我将使用一个修改器,例如control
e.isControlDown()
,或者用另一个鼠标按钮拖动组件。

使用viewToModel()获取按下点的插入符号位置。检查插入符号位置是否在getSelectionStart()和getSelectionEnd()之间。如果位于选定区域,则开始拖动。

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

这可能是唯一不会让用户无休无止地烦恼的方法。Rocky和StanislavL的方法不允许用户通过拖动鼠标来选择完整的文本。这可能是唯一一种不会让用户无休无止地烦恼的方法。Rocky和StanislavL的方法不允许用户通过拖动鼠标来选择完整的文本。