在这种情况下,“有效”的含义是什么? http://docs.oracle.com/javase/tutorial/uiswing/layout/howLayoutWorks.html
容器可以有效(即isValid()返回true)或无效。要使容器有效, 所有容器的孩子必须已经布置好,并且必须全部有效。该 Container.validate方法可用于验证无效容器。这个方法触发了 容器和所有子容器的布局在组件层次结构中并标记为此 容器有效。
答案 0 :(得分:2)
“有效”是容器的属性。容器可以有效或无效。如果C1和C2是容器而C2在C1内部且C2无效,则C1也是无效的。如果您调用C1.validate(),C2也将变为有效。请注意,如果C2尚未布局,则C1无效。
答案 1 :(得分:2)
在Swing中创建Component时,它无效,即它的有效属性为false。当一个组件的宽度,高度,位置和内容已经确定时,该组件被认为是有效的。这通常通过直接或间接调用其validate()方法来完成。当我们在容器上调用validate()时,它将通过调用其doLayout()方法来验证容器(如果它是无效的),该方法通常会调用LayoutManager。现在,放置在这个容器上的每个子项都将以递归方式进行验证,这样整个树就会被布局并生效。
答案 2 :(得分:2)
isValid()
表示容器层次结构已按照布局管理器当前定义的正确布局(例如BorderLayout
),例如,如果在运行时从JPanel中删除了JButton,则应调用{{1或validate()
这告诉Swing布局管理器重新计算当前容器的布局并触发树下的递归操作。
只需注意revalidate()
与调用invalidate()然后验证()相同。嵌套revalidate()的这些操作可能很昂贵。