2011-06-01 7 views
1

私はラベルをgwtし、グリッドグリッドに配置します。私はラベルにいくつかのイベントがあります。だから私は、グリッドセル全体を埋めるためにラベルが必要です...そうでなければ、イベント上のマウスはトリガーされません。グリッドセルを埋めるためにgwtラベルを取得するにはどうすればよいですか?

現在、私はラベルにsetWidth( "100%")とsetHeight( "100%)を行っています。これは、水平に塗りつぶすラベルを取得します...しかし、グリッドセルを塗りつぶすための高さを取得することはできません。 グリッドセル(horzとvert)全体を埋めるためにラベルをどのように取得しますか?私は100%に変更することができますいくつかの種類のCSSプロパティはありませんか?


私が得た最も遠いグリッドにラベルをラップすることでした。グリッド/ラベルをグリッドセルに埋め込みます。ラベルはグリッド全体を占めるように見えます。しかし、イベントはまだラベルのためだけに機能します。

答えて

1

イベントに渡されたセルがラベルである場合は、グリッド上ではclickHandlerを設定し、確認し使用することができ、細胞のイベントをキャプチャするにはセルを処理する必要があります。こうすることで、セルコンテンツ全体でトリガされるイベントを確実に作成できます。

セルが100%満たされない理由は、テーブル(デフォルト)にセル間隔が設定されているために、100%の幅/高さが得られないためです。 cellspacingを0に設定することはできますが、これはテーブル内のすべてのセルに適用されることを意味します。レイアウトが望ましくない方法で変更される可能性があるため、テーブル上のクリックハンドラーを使用する方が優れています。

-1

私はカスタムの "FillLabel"クラスを作成しました。次に、CSSスタイルのプロパティwidth/heightを両方とも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

これは非常に悪い解決策です。使用しないでください。 –

+1

誰かに "あなたの解決策が悪いと言ったら、同じ結果を得るためにyの代わりにxをする必要があります"あなたの解決策は私のやり方をしゃぶりますが、なぜ私の道が良いのか言っても怠けです。私には全く説得力のない同じことをしても "。 (ソリューションxと既に提示されているものとを対比させる必要があります) –

+0

私のソリューションはすべての要件に適合しています...少なくとも「ソリューションはすべての要件を満たしています」という点で「良い」です。 (...私がすでに述べたように、私のソリューションは "エレガント"だとは思わない) –

関連する問題