1

戻る、次へ、キャンセルの 3 つのボタンがある水平パネルがあります。横方向を右に揃えましたが、[次へ] ボタンと [キャンセル] ボタンだけがこの配置に従います。

コードは次のとおりです。

HorizontalPanel buttons = new HorizontalPanel();
buttons.setWidth("100%");

cancel = new Button("Cancel");
next = new Button("Next");
back = new Button("Back");

buttons.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
buttons.add(back);
buttons.setCellWidth(back, "98%");
buttons.add(nextBtn);
buttons.setCellWidth(next, "1%");
buttons.add(cancel);
buttons.setCellWidth(cancel, "1%");

問題はこのパネル幅にあります。しかし、それを削除すると、すべてのボタンが左揃えになります。回避策として、非表示になり、セル幅 = 97% の false ボタンを使用できます。戻るボタンのセル幅は 1% です。しかし、これは私が必要とするものではありません。この目に見えないボタンが消費するメモリは少量ですが、それでもメモリです:)

このアライメントの何が問題になっていますか? パネルの幅に問題があるのでしょうか?よろしくお願いします。

4

2 に答える 2

3

Horizo​​ntalPanelにはsetCellHorizo ​​ntalAlignment()プロパティがあります。それを使用すると、そのウィジェットを整列させることができます。

以下を試してください:

buttons.setCellHorizontalAlignment(backButton, HasHorizontalAlignment.ALIGN_RIGHT);
buttons.setCellHorizontalAlignment(nextButton, HasHorizontalAlignment.ALIGN_RIGHT);
buttons.setCellHorizontalAlignment(cancelButton, HasHorizontalAlignment.ALIGN_RIGHT);
于 2012-07-13T07:04:42.580 に答える
2

css を使用すると、これをはるかに簡単に実現できます。

FlowPanel panel = new FlowPanel();
panel.setWidth("100%");

cancel = new Button("Cancel");
cancel.getElement().getStyle().setFloat(Float.RIGHT);
next = new Button("Next");
next.getElement().getStyle().setFloat(Float.RIGHT);
back = new Button("Back");
back.getElement().getStyle().setFloat(Float.RIGHT);

panel.add(back);
panel.add(nextBtn);
panel.add(cancel);
于 2012-07-12T21:17:11.280 に答える