区分 Java 的 JTextArea 中的拖动和选择
我的 Java 应用程序有几个用户可以移动的 JTextArea
。我通过向其添加鼠标运动拖动侦听器来实现此目的。
public void mouseDragged(MouseEvent e) {
int deltaX = e.getXOnScreen() - screenX;
int deltaY = e.getYOnScreen() - screenY;
setLocation(myX + deltaX, myY + deltaY);
}
我在区分用户何时想要在 JTextArea 中选择文本以及何时想要拖动文本时遇到问题。有什么想法吗?
My Java application has several JTextAreas
that the user can move around. I achieve this by adding a mouse motion drag listener to it.
public void mouseDragged(MouseEvent e) {
int deltaX = e.getXOnScreen() - screenX;
int deltaY = e.getYOnScreen() - screenY;
setLocation(myX + deltaX, myY + deltaY);
}
I am having a problem differentiating when the user wants to select text within the JTextArea
and when they want to drag it around. Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我将使用修饰符,例如 control
e.isControlDown()
或另一个鼠标按钮来拖动组件。I would use a modifier, for example control
e.isControlDown()
, or another mouse button to drag the component.您可能想要处理第一个鼠标按下的情况,检查文本是否被选中。如果鼠标指针位于文本上,则将其设置为将其识别为拖动的状态。
You may want to handle the first mouse down, check to see if text is selected. If the mouse pointer is on the text then set it to a state to identify it as a drag.
使用 viewToModel() 获取按下点的插入符位置。检查插入符位置是否在 getSelectionStart() 和 getSelectionEnd() 之间。如果它在选定区域中,则开始拖动。
Use viewToModel() to obtain caret position of pressed point. Check whether the caret position is between getSelectionStart() and getSelectionEnd(). If it's in selected region start drag.