2012-03-20 11 views
1

この文脈で「有効」とは何ですか?
http://docs.oracle.com/javase/tutorial/uiswing/layout/howLayoutWorks.html有効なコンテナは何ですか?

容器は、有効であり得るか、または無効(つまり、はisValid()がtrueを返します)。コンテナが有効になるには、 すべてのコンテナの子が既にレイアウトされていなければならず、すべて有効でなければなりません。 Container.validateメソッドを使用して、無効なコンテナを検証することができます。このメソッドは、コンテナおよびすべての子コンテナのコンポーネント階層の下に レイアウトをトリガし、この コンテナを有効としてマークします。

+1

なるほど、より良いテストになります – mKorbel

答えて

2
isValid() 

は、実行時にJPanelのからのJButtonを削除した場合、あなたはvalidate()revalidate()を呼び出す必要があり、現在(例えば、BorderLayout用)レイアウトマネージャによって定義されているコンテナ階層は、例えば、正確にレイアウトされていることを示しますこれは、現在のコンテナのレイアウトを再計算し、ツリーの下に再帰的なアクションをトリガするようにSwingレイアウトマネージャに指示します。

revalidate()は、invalidate()とvalidate()の呼び出しと同じです。ネストされたrevalidate()のこれらの操作は高価になる可能性があります。 (再)した後、その状況について確認すること)(isDisplayable無効なコンテナを検証しているため

2

"有効"はコンテナの属性です。コンテナは有効または無効です。 C1とC2がコンテナであり、C2がC1の内部にあり、C2が無効である場合、C1も無効です。 C1.validate()を呼び出すと、C2も有効になります。既にC2が配置されていない場合、C1は無効であることに注意してください。

2

Swingでは、コンポーネントを作成するときに無効です。つまり、有効なプロパティはfalseです。コンポーネントは、幅、高さ、位置、および要素が決定されたときに、有効であると言われます。これは、通常、validate()メソッドを直接的または間接的に呼び出すことによって行われます。コンテナに対してvalidate()を呼び出すと、通常はLayoutManagerを呼び出すdoLayout()メソッドを呼び出すことによって、コンテナが無効である場合にそのコンテナを検証します。このコンテナに配置された各子は、ツリー全体がレイアウトされて有効になるように、再帰的に検証されます。

関連する問題