【问题标题】:differentiating dragging and selecting in Java's JTextArea在 Java 的 JTextArea 中区分拖动和选择
【发布时间】:2011-10-11 03:47:07
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java swing draggable mouseevent jtextarea


    【解决方案1】:

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

    【讨论】:

    • 这可能是唯一不会惹恼用户的方法。 Rocky 和 ​​StanislavL 的方法不会让用户通过拖动鼠标来选择完整的文本。
    【解决方案2】:

    您可能想要处理第一个鼠标按下,检查是否选择了文本。如果鼠标指针在文本上,则将其设置为将其识别为拖动的状态。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多