6

GXTでは、基本的に次のように、下部のコンポーネントに重要なパネルが追加されたコントロールがあります。

public class SamplePanel extends ContentPanel {

ContentPanel panel = new ContentPanel();    

public SamplePanel() {
    setBottomComponent(panel);
}

public void setVisible(boolean isVisible) {
    panel.setVisible(isVisible);
}

パネルはウィジェットの下部にとどまり、常に表示可能である必要があるため、「下部コンポーネント」として設定されています。

問題は、パネルの表示が正しく切り替わる一方で、「下部コンポーネント」領域のサイズが変更されて小さくなり、下部領域の新しい寸法に収まらないことです。

ただし、マウスを使用してウィジェットのサイズを手動で変更すると、下部の領域のサイズが変更されることに気付きました。

プログラムで再描画/再描画/再レイアウトを強制する方法はありますか...コンテンツの新しいサイズを反映するように下部のコンポーネントを変更する方法はありますか?

私はこれらすべてを試しましたが、機能しません:

public void setVisibility(boolean isVisible) {
        panel.setVisible(isVisible);
        doLayout(true);
        recalculate();
        repaint();
    }

ありがとう

4

5 に答える 5

8

最後のgxtで行うことができます。

this.layout(true);

それ以外の場合は、Events.Resizeイベントを発生させることができます。

于 2012-04-05T14:13:50.253 に答える
1

GXTについてはわかりませんが、GWTではパネルのforce()またはメソッドの1つを使用します。forceLayout()おそらく、それを行うための同様のAPIがあります!

HTH。

于 2011-01-25T12:53:06.217 に答える
1

setLayoutOnChange()の方法を使ってみましたConentPanelか?

于 2012-04-11T16:47:06.057 に答える
0

これを確認することをお勧めします: http: //davidmaddison.blogspot.com/2008/12/gwt-rendering-process.html

パネルにリスナーを追加し、そこでpanel.layout()を呼び出してみてください。

于 2011-01-28T00:32:20.280 に答える
0

この投稿では、パネルがレンダリングされた後は上部と下部のコンポーネントがレイアウトに参加しないと主張し、手動の回避策(RowLayoutを使用)またはパネルのサイズを手動で設定することを提案しています。

親からサイズを見つけてonResize(width、height)を呼び出すことを検討してください

于 2011-04-18T00:05:32.650 に答える