2011-06-01 103 views
1

我有一个gwt标签,我把它放到一个gwt网格中。我在标签上有一些事件。所以我需要标签来填满整个网格单元格,否则鼠标悬停在事件上不会触发。如何获得gwt标签以填充网格单元格?

目前我正在标签上做一个setWidth(“100%)和setHeight(”100%)。这会让标签水平填充......但我无法获得填充网格单元格的高度。 如何让标签填满整个网格单元(horz和vert)?是不是有某种CSS属性我可以更改为100%?


我得到的最远是将标签包装在一个网格中。然后将网格/标签嵌入到网格单元格中。标签看起来像占据了整个网格。但事件仍然只适用于标签。

回答

1

要捕获您可以使用设置一个clickHandler事件对电网和检查电池的情况下,如果在事件通过的单元是标签你需要处理的细胞。这样,你肯定可以有一个触发整个单元格内容的事件。

单元格未被填充100%的原因很可能是因为表格(默认情况下)具有单元格间距设置,这会限制您获得100%的宽度/高度。您可以将cellspacing设置为0,但这意味着它适用于表格中的所有单元格,这意味着您的布局可能会以不希望的方式更改,因此让表格上的clickhandler是更好的解决方案。

-1

我创建了一个自定义的“FillLabel”类。然后将CSS样式属性的宽度/高度设置为100%。这个自定义的FillLabel类似乎满足了要求... 虽然我觉得有一个更优雅的解决方案,我欢迎任何其他人

我扩大电网和添加各种鼠标事件接口:

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()); 
    } 

} 
+0

这是一个非常糟糕的解决方案,不应该使用它。 – 2011-06-05 14:53:15

+1

当你告诉某人“你的解决方案不好,你应该做x而不是y来得到相同的结果”,这就像是对某人说的“你的解决方案很糟糕,但我懒得说我为什么会更好。 ..即使它做同样的事情“这对我来说根本不具说服力。 (您必须将您的解决方案x与已经提供的解决方案进行对比) – 2011-06-06 00:06:45

+0

我的解决方案符合所有要求......所以至少在“解决方案满足所有要求”方面“很好”。 (......因为我已经说过我不认为我的解决方案是“优雅的”。) – 2011-06-06 00:11:02

相关问题