来自JavaDoc:
public void validate()
验证此容器及其所有子组件。验证容器意味着布置其子组件。
这就是我想要做的。使用尽可能轻量级的组件。但当我执行此操作时JComponent
调用validate()
不会使该组件“有效”。
JComponent c = new JComponent() {};
System.out.println(c.isValid()); // false
c.validate();
System.out.println(c.isValid()); // false
为什么我不能使JComponent
有效?
答案 0 :(得分:4)
在isValid()
的文档中,它说:
如果组件的大小正确且位于其父容器中且其所有子组件也有效,则该组件有效。
在您到达Top-Level Container(JFrame
,JInternalFrame
或JApplet
)之前,就是这种情况。在您的问题示例中,您的JComponent
没有父母,因此永远无效。
答案 1 :(得分:0)
java.awt.Component.isValid()
州的Javadoc:
当组件的大小正确且位于其父容器中且其所有子组件也有效时,该组件有效。
简而言之,在将组件添加到容器之前,您无法验证该组件。
答案 2 :(得分:0)
要添加答案中的内容,请不要忘记覆盖getPreferedSize()
方法以返回组件首选大小。否则,布局管理器将不会定位您的JComponent
,因此不会显示。