2011-06-01 105 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

相關問題