2

来自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有效的?

4

3 回答 3

4

在它的文档中isValid()说:

当一个组件在其父容器中的大小和位置正确并且其所有子容器也有效时,它是有效的。

在您到达顶级容器JFrame或)之前JInternalFrame都是这种情况JApplet。在您的问题示例中,您JComponent没有父母,因此它永远不会有效。

于 2011-12-02T20:56:53.363 回答
0

要添加答案中所说的内容,请不要忘记覆盖getPreferedSize()方法以返回您的组件首选大小。否则布局管理器不会定位您的JComponent因此不会显示。

于 2011-12-02T21:11:21.817 回答
0

状态的 Javadoc java.awt.Component.isValid()

当一个组件在其父容器中的大小和位置正确并且其所有子容器也有效时,它是有效的。

简而言之,在将组件添加到容器之前,您无法验证组件。

于 2011-12-02T20:57:03.240 回答