我开发了一个自定义组件,其中包含一个布局和两个标签。此布局是可拖动的。代码与此类似:
DragAndDropWrapper boxWrap= new DragAndDropWrapper(layout);
mainLayout.addComponent(boxWrap);
之后,我有一个 RichTextArea 允许将布局放入其中。有了这个代码。
RichTextArea richText= new RichTextArea;
DragAndDropWrapper dndWrapper = new DragAndDropWrapper(richText);
dndWrapper.setDropHandler(new DropHandler() {
public void drop(DragAndDropEvent event) {
//Do whatever you want when something is dropped
}
//Criterio de aceptacion
public AcceptCriterion getAcceptCriterion() {
return AcceptAll.get();
}
});
代码工作正常。但是,当我在 RichTextArea 中放置布局时,您希望在该区域中写入文本并添加一些文本,但方法 richText.getValue() 不会更新,除非我将焦点更改为另一个组件或选项卡。我猜没有与服务器端通信,因此该值没有更新。当鼠标按下布局时,有什么方法可以强制改变焦点?我尝试使用 JavaScript,但我不知道如何将 onmousedown="function()" 属性添加到布局组件。我还尝试扩展 RichTextArea 并实现 MouseListener 或其他东西或 TextChangeListener,但没有任何效果。
有什么线索吗?谢谢你。
PS:组件不能与 RichTextArea 不同。