2011-11-14 9 views
2

私はGWTに新たなんだので、次のように助けを必要に応じて、GWTのボタンを配置します添付)。これはどうすればいいですか?私はどんな助けにも感謝しています!は自動的にサイズ

enter image description here

+0

最終的にあなたの写真のように見えるように各ボタンの幅を調整する必要がありますか、単に隣り合わせにする方法を探しています。また、ボタンの行に余裕がなければ次の行に進むだけですか?後者の場合は、ボタンに固定幅を与えて 'float:left;'に設定するだけで実現できます。 – Strelok

+0

これは画像とまったく同じように見えます。利用可能な水平スペース全体をボタンで埋めるようにしたいので、 'float:left;'は機能しません。たとえば、ボタンを配置したい領域は幅300ピクセルです。ボタン1の幅は250ピクセルです。ボタン2はボタン1の横には収まらないため、ボタン1は300pxの幅を、ボタン2と3は次の行に移動します。 – Skinny

+0

しかし、それはちょうど '浮動小数点:左;'が行うことです...または私は何かを誤解しています。それをチェックしてください:http://jsfiddle.net/heC6Z​​/ – Strelok

答えて

1

私はあなただけ左それらをフロートするために追加のCSSスタイルを使用してウィジェットを配置し、私のコメントで言ったように。 GWTコンテナとしては、FlowPanelがあります。

CSS:

.yourWidget { 
    float: left; 
    ..other styles.. 
} 

.container { 
    width: 300px; 
    overflow: hidden; 
} 

コード:

YourButtonWidget w1 = new YourButtonWidget("Some long label"); 
w1.addStyleNames("yourWidget"): 
YourButtonWidget w2 = new YourButtonWidget("Label"); 
w2.addStyleNames("yourWidget"): 
YourButtonWidget w3 = new YourButtonWidget("Another Label"); 
w3.addStyleNames("yourWidget"): 

FlowPanel container = new FlowPanel(); 
container.add(w1); 
container.add(w2); 
container.add(w3); 

はもちろん、あなたのボタンを表すウィジェットの一部としてCSSスタイルを統合することができます。あなたのウィジェットはそれ自身に幅を割り当てなければならないことを覚えておいてください。あるいはfloat: left;は明らかに機能しません。

UPDATE:あなただけのコンテナ内のすべての利用可能なスペースを埋めるために、ボタン1と2の幅を調整するためのアルゴリズムを開発しなければならない、そのために私は、あなたの最後のコメントをお読みください。 float: left;は作業をスチールしますが、ボタンのサイズを調整するだけです。

3つのボタンで、それは簡単だ(button1Widthとbutton2Widthは動的であり、button3Widthは固定である。)ここでは、(上から継続)の最終幅をうまくする方法である:

int containerWidth = container.getElement().getOffsetWidth(); 
int button1Width = w1.getElement().getOffsetWidth(); 
int button2Width = w2.getElement().getOffsetWidth(); 
int button3Width = w3.getElement().getOffsetWidth(); 

if ((button1Width + button2Width) > containerWidth) { 
    button1Width = containerWidth; 
    if ((button2Width + button3Width) > containerWidth) { 
    button2Width = containerWidth; 
    } else { 
    button2Width = containerWidth - button3Width; 
    } 
} else { 
    button2Width = containerWidth - button1Width; 
} 

w1.getElement().getStyle().setWidth(button1Width,Unit.PX); 
w2.getElement().getStyle().setWidth(button2Width,Unit.PX); 
w3.getElement().getStyle().setWidth(button3Width,Unit.PX); 

はちょうどあなたが行うことを確認してくださいこれらの調整の後にあなたはDOMにすべてを添付します。そうでなければ、幅は明らかに利用できません。

+0

ありがとう;)私はこのような何かを試してみます。私は、おそらく、このような種類のものを行う、派手なGWTレイアウトがあると考えました... – Skinny

+0

これは具体的で狭いケースで、どのフレームワークやツールキットにもそのような機能があるとは思えません。また、GWTはフレームワークではないことを覚えておく必要があります。これは*ツールキット*なので、独自のフレームワークと機能を構築するための構築ツールを提供します。 – Strelok

関連する問題