我有一个gwt标签,我将它放入gwt网格。我在标签上有一些活动。所以我需要标签来填满整个网格单元格...否则鼠标悬停事件将不会触发。
目前我正在标签上执行setWidth(“100%)和setHeight(”100%)。这使标签水平填充......但我无法获得填充网格单元格的高度。 如何让标签填满整个网格单元格(horz和vert)?是不是有某种CSS属性我可以改为100%?
我得到的最远的是将标签包裹在网格中。然后将网格/标签嵌入网格单元格中。然后标签看起来占据了整个网格。但事件仍然只适用于标签。
答案 0 :(得分:1)
要在单元格上捕获事件,您可以使用在网格上设置clickhandler并检查事件中传递的单元格是否是您需要处理的标签单元格。通过这种方式,您当然可以为整个单元格内容触发事件。
单元格未填充100%的原因很可能是因为表格(默认情况下)设置了单元格间距,这限制了您获得100%的宽度/高度。您可以将cellspacing设置为0,但这意味着它适用于表中的所有单元格,这意味着您的布局可能会以不希望的方式发生变化,因此在表格上使用clickhandler是一种更好的解决方案。
答案 1 :(得分:-1)
我创建了一个自定义的“FillLabel”类。然后将CSS样式属性width / height设置为100%。这个自定义FillLabel类似乎满足了要求... 虽然我觉得有一个更优雅的解决方案,我欢迎任何其他人。
我扩展了Grid并添加了各种鼠标事件接口:
import com.google.gwt.event.dom.client.*
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.Label;
public class FillLabel
extends Grid
implements HasMouseOutHandlers,
HasMouseOverHandlers,
HasMouseMoveHandlers
{
private Label label;
/** Use this constructor if you are creating a root for a new tree. */
public FillLabel(String name) {
super(1,1);
this.label = new Label(name);
this.setWidget(0, 0, this.label);
}
/***************************************************************************
* Mouse Over Events
***************************************************************************/
@Override
public HandlerRegistration addMouseOverHandler(MouseOverHandler handler) {
return this.addDomHandler(handler, MouseOverEvent.getType());
}
/***************************************************************************
* Mouse Out Events
***************************************************************************/
@Override
public HandlerRegistration addMouseOutHandler(MouseOutHandler handler) {
return this.addDomHandler(handler, MouseOutEvent.getType());
}
/***************************************************************************
* Mouse Move Events
***************************************************************************/
@Override
public HandlerRegistration addMouseMoveHandler(MouseMoveHandler handler) {
return this.addDomHandler(handler, MouseMoveEvent.getType());
}
}