Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SetVisible(false),占用空间_Java_User Interface_Jbutton_Visibility - Fatal编程技术网

Java SetVisible(false),占用空间

Java SetVisible(false),占用空间,java,user-interface,jbutton,visibility,Java,User Interface,Jbutton,Visibility,我会把一个钮扣藏在一个小盒子里。我正在使用setVisible()方法,但我有一个问题:它可以工作,但我的GUI由于缺少组件而发生了变化。有没有办法隐藏组件并占用其空间??? 我知道这在Android中是可能的,但在Java中呢? 另外,要在我的JPanel中插入组件,我使用的是GridBagLayout 通常有几种方法可以实现这一点 最合适的方法是布局其他组件,使其保持正确连接在当前位置 因为对于复杂的布局,正确的方法可能很难获得,尤其是之后很难更改,所以您可以应用一些布局“hacks”。例如

我会把一个钮扣藏在一个小盒子里。我正在使用setVisible()方法,但我有一个问题:它可以工作,但我的GUI由于缺少组件而发生了变化。有没有办法隐藏组件并占用其空间??? 我知道这在Android中是可能的,但在Java中呢?
另外,要在我的JPanel中插入组件,我使用的是GridBagLayout

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

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

因为对于复杂的布局,正确的方法可能很难获得,尤其是之后很难更改,所以您可以应用一些布局“hacks”。例如,您可以将按钮添加到单独的面板(我们将其命名为buttonPanel),然后将该面板与按钮一起添加到包含其他组件的面板,而不是直接将按钮添加到面板中。这样,当您移除按钮时,buttonPanel将保留以填充间隙

但是,根据指定约束的方式,删除按钮时buttonPanel可能会收缩。为了防止这种情况,在移除按钮之前,取下按钮面板的宽度,并将其设置为其最小/首选宽度;大多数布局经理都会尊重这一点


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

尝试使用
setOpaque()
方法。只需执行
button.setOpaque(false)
这应该就可以了。这样行吗