我有一个复合小部件,它在AbsotutePanel上包含一个禁用的TextArea。现在我希望能够从任何位置开始拖动复合窗口小部件,包括禁用的文本区域。
这可能吗?
答案 0 :(得分:0)
如果要拖动复合窗口小部件,则需要引用“拖动句柄”,它是实现HasAllMouseHandlers
的复合窗口小部件中的元素之一。最简单(在我看来,最干净)的方法是让复合小部件扩展接口HasDragHandle
,这需要复合具有方法:
Widget getDragHandle();
接口没有明确告诉您,但返回的小部件必须是实现HasAllMouseHandlers
接口的小部件(否则您将收到运行时错误)。
(实现HasAllMouseHandlers
的非复合小部件可以直接使用)
我建议使用Label作为拖动句柄(它不需要包含任何可以设置样式的文本,以便用户理解它可以用于拖动),而不是表单元素,因为那样你'以用户最不可能期望的方式重新加载它的行为。我不太确定一个禁用元素如何作为拖动句柄工作,很可能禁用一个元素会阻止任何鼠标列表工作,因此它不能用作拖动句柄(虽然没有尝试过)。 / p>
答案 1 :(得分:0)
或者,尝试将您的小部件放入一个FocusPanel,它已经启用了拖放功能。我用TextBox和一个按钮做了这个,它似乎工作正常。禁用FocusPanel内部的窗口小部件也可防止其意外被激活。