从任何有焦点的东西中移除焦点

时间:2013-01-21 09:55:55

标签: gwt drag-and-drop focus

我正在MouseDownEvent处理MouseUpEventImage,以便选择部分图片。大多数浏览器将开始拖动图像,除非在事件上调用preventDefault(),如此图像所示:

调用preventDefault()的主要缺点是,如果重点是TextBox,那么即使Image上的点击应删除它,它也会保留在那里

我找不到从当前碰巧拥有它的任何小部件中移除焦点的方法,或者将焦点放在Image上。到目前为止,我唯一的解决方法是创建一个无法看见的无用TextBox,当我想要移除焦点时,我将其视为可见,给它焦点,并使其再次不可见。呸。还有更好的建议吗?

1 个答案:

答案 0 :(得分:3)

为了使图像可聚焦,您必须将属性tabindex添加到元素,然后您可以调用Element.focus()方法,以便在用户点击图像时将焦点放在图像上。

final Image i = new Image("http:...");
i.getElement().setAttribute("tabindex", "0");    
i.addMouseDownHandler(new MouseDownHandler() {
  public void onMouseDown(MouseDownEvent event) {
    event.preventDefault();
    i.getElement().focus();
  }
});

另一种方法,如果你不需要图像可聚焦,只需处理dragStart事件并防止默认值,而不是鼠标按下和向上处理程序。

i.addDragStartHandler(new DragStartHandler() {
  public void onDragStart(DragStartEvent event) {
    event.preventDefault();
  }
});