【问题标题】:Remove Swing Component Using Validate or Revalidate使用 Validate 或 Revalidate 移除 Swing 组件
【发布时间】:2010-10-25 23:03:42
【问题描述】:

每当我从 JPanel 中删除和添加摆动组件时,我应该执行调用验证还是重新验证?

【问题讨论】:

    标签: java swing


    【解决方案1】:

    我认为 revalidate() 是你想要的。在调用 revalidate() 之后,将自动为您调用 validate() 方法。 See the Java API for JComponent.revalidate().

    【讨论】:

      【解决方案2】:

      至少在 Java 7 中,revalidate() 不一定会从屏幕上“擦除”已删除的组件。我相信当边界框缩小时会发生这种情况。对于这些情况,请在revalidate() 之后调用repaint()

      【讨论】:

        【解决方案3】:

        revalidate() 基本上是 invalidate() 后跟 validate()

        查看 Sun 的 Java 源代码。

        你想打电话给revalidate()

        【讨论】:

        • “基本上”正在拉伸它。如果您执行invalidate() 后跟validate(),您将不会得到与revalidate() 相同的结果。
        【解决方案4】:

        revalidate() 会更好。 revalidate() 将所有容器标记为不正确或无效。然后它在顶层调用 validate()。父级的 validate() 方法检查是否至少有一个直接子级发出无效或不正确的信号。它调用父级的验证。 所以调用 revalidate() 自动意味着调用 validate()。

        【讨论】:

          猜你喜欢
          • 2012-03-19
          • 1970-01-01
          • 1970-01-01
          • 2010-11-09
          • 2013-06-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多