如何获得gwt标签来填充网格单元?

如何获得gwt标签来填充网格单元?,gwt,Gwt,我有一个gwt标签,并将其放入gwt网格中。我的标签上有一些活动。所以我需要标签来填满整个网格单元。。。否则将不会触发鼠标悬停事件 目前,我正在标签上做setWidth(“100%)和setHeight(“100%)。这将使标签水平填充。。。但我无法得到填充网格单元格的高度如何使标签填充整个网格单元(水平和垂直)?是否有某种CSS属性可以更改为100%? 我得到的最远的结果是将标签包装成网格。然后将网格/标签嵌入网格单元。然后,标签看起来好像占据了整个网格。但是事件仍然只对标签有效。我创建了一

我有一个gwt标签,并将其放入gwt网格中。我的标签上有一些活动。所以我需要标签来填满整个网格单元。。。否则将不会触发鼠标悬停事件

目前,我正在标签上做setWidth(“100%)和setHeight(“100%)。这将使标签水平填充。。。但我无法得到填充网格单元格的高度如何使标签填充整个网格单元(水平和垂直)?是否有某种CSS属性可以更改为100%?


我得到的最远的结果是将标签包装成网格。然后将网格/标签嵌入网格单元。然后,标签看起来好像占据了整个网格。但是事件仍然只对标签有效。

我创建了一个自定义的“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());
    }

}

要捕获单元格上的事件,可以使用在网格上设置clickhandler,并检查事件中传递的单元格是否是需要处理的标签单元格。这样,您当然可以为整个单元格内容触发一个事件


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

这是一个非常糟糕的解决方案,不应该使用。当您告诉某人“你的解决方案不好,你应该做x而不是y来获得相同的结果”这就像对某人说“你的解决方案很糟糕,按我的方式做,但我太懒了,不想说为什么我的方式更好。。。即使它做了同样的事情,“这对我来说一点也没有说服力”(你必须将你的解决方案x与已经提出的方案进行对比),我的解决方案符合所有要求……因此,至少它是“好的”,因为“解决方案满足所有要求”。(…正如我已经说过的,我认为我的解决方案并不“优雅”。)另外,至少我的解决方案为问题的讨论增加了价值,因为它提供了不同的观点。这是一个不好的解决方案的一些原因。它不好是因为你扩展了网格,这意味着它公开了网格上的所有方法,而它只是一个标签。在两者之间放置一个小部件,因为它可以工作,是一个解决样式问题的方法这几乎是错误的解决方案。