2011-01-24 15 views
5

は、私は基本的にこのように、一番下のコンポーネントに追加され、重要なパネルとコントロールを持っている:Ext GWT(GXT)で再描画/再レイアウトを強制するには? 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(); 
    } 

おかげ

答えて

8

this.layout(true); 

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

+0

火災リサイズイベントのトリックは非常に微妙なので、ハッキーなので、隠されていますが、それほど恐ろしい作品です... –

0

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

HTH。

+0

ええと... ContentPanel(私が使っているこのクラスのスーパークラス)で.force()または.forceLayout()メソッドが見つからないようです。どのクラスが.force()を公開していますか? – Cuga

0

This post主張その上部と下部のコンポーネントへパネルがレンダリングされたらレイアウトに参加せず、手動で回避策(RowLayoutを使用)を提案するか、パネルのサイズを手動で設定します。あなたが行うことができます最後のGXTで

親からサイズを見つけ、さらにonResize(幅、高さ)を呼び出すことを検討

1

ConentPanelsetLayoutOnChange()メソッドを使用してみましたか?

関連する問題