【问题标题】:SetVisible(false) with the space occupiedSetVisible(false) 占用空间
【发布时间】:2015-07-23 15:06:17
【问题描述】:

我会在 JApplet 中隐藏一个 JButton。我正在使用 setVisible() 方法,但我遇到了一个问题:它可以工作,但由于缺少组件,我的 GUI 发生了变化。有没有办法隐藏一个组件并占用它的空间??? 我知道这在 Android 中是可能的,但在 Java 中呢? 附言。要在我的 JPanel 中插入组件,我正在使用 GridBagLayout!

【问题讨论】:

    标签: java user-interface jbutton visibility


    【解决方案1】:

    通常有几种方法可以实现这一点。

    最正确的方法是布局其他组件,使其保持正确连接在当前位置。

    由于对于复杂的布局,正确的方式很难获得,尤其是之后很难改变,您可以应用一些布局“hacks”。例如,您可以不直接将按钮添加到面板,而是将按钮添加到它自己的单独面板(我们将其命名为 buttonPanel),然后将该面板与按钮一起添加到包含其他组件的面板中。这样,当您移除按钮时,buttonPanel 会留下来填补空白。

    但是,根据您指定约束的方式,buttonPanel 可能会在您移除按钮时缩小。为了防止这种情况,在移除按钮之前,获取 buttonPanel 的宽度并将其设置为其最小/首选宽度;大多数 LayoutManager 都会尊重这个属性。

    当然,您始终可以使用硬编码尺寸来避免动态尺寸计算,但请记住 L&F 和 i18n 的问题。

    【讨论】:

      【解决方案2】:

      尝试使用setOpaque() 方法。只需执行button.setOpaque(false); 就可以了。这行得通吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-07
        • 1970-01-01
        • 2011-12-10
        • 1970-01-01
        • 1970-01-01
        • 2017-11-03
        • 2011-07-07
        相关资源
        最近更新 更多