0

私のエディターでは、ユーザーが以下のフィールドのいずれかに誤った入力を入力するたびに、情報メッセージを赤い色で点滅させるラベルコントロールを上部に含むコンポジットがあります。テキストは、ユーザーの入力に応じて動的に変化し続けます。誤った入力に対して赤い色のテキストを表示し、正しい入力に対してラベルに何も表示しないという効果を実現できます。

ただし、ラベルコンポジットに表示するエラーがない場合は、以下のフィールドの残りの部分が上にシフトして表示されるようにしたいと思います。また、表示するエラーがある場合は、その場所(他のすべてのフィールドの上部)にエラーが表示され、他のフィールドが押し下げられます。

すべてのコントロールを再描画せずにこの効果を達成する方法はありますか?

4

1 に答える 1

0

はい、保護者に連絡layout (true)してください。

たとえば、上部に検索バーがあり、表示を切り替えることができるビューがあります。検索コンポジットを作成する方法とそれを削除する方法があります。

private void createNameSearchBar () {
    mySearchControl = new CardSearchControl (myViewComposite, SWT.NONE);
    mySearchControl.setSearchListener (this);
}


private void disposeNameSearchBar () {
    mySearchControl.dispose ();
    mySearchControl = null;
}

private CardSearchControl mySearchControl = null;
private Composite myViewComposite;
private boolean mySearchBarState;

検索バー コントロールを非表示または表示するには、このメソッドを呼び出します (myViewComposite は、検索バーと他のすべてのコントロールを所有する最上位のコントロールです)。

public void setSearchBarState (boolean show)  {
    mySearchBarState = show;

    if (myViewComposite == null  ||  myViewComposite.isDisposed ())
        return; // no work to do

    if (mySearchBarState  &&  mySearchControl == null)  {
        createNameSearchBar ();
        mySearchControl.moveAbove (null);
        myViewComposite.layout (true);
    }  else if (!mySearchBarState  &&  mySearchControl != null)  {
        disposeNameSearchBar ();
        myViewComposite.layout (true);
    }
}
于 2009-11-03T19:45:36.363 に答える