我可以使组件透明而不隐藏它吗?

Can I make a component transparent without hiding it?

我需要使一个组件透明,所以没有什么可看的,但它仍然占据了它的位置(与 setVisible(false) 不同)。

使用 CSS 术语,我需要 visibility:hidden 而不是 display:none

理想情况下,它应该适用于任何组件,包括容器及其子组件。所以我不认为,子类化和覆盖 paint 或类似的方法是可行的。

一种方法是将您有时希望透明的组件(称之为 "trans")放置在另一个 JPanel ("holder") 中,然后将 holder 放置在您要放置的位置反式

为了透明化,将 holder 的首选大小设置为 trans 的首选大小,并将 trans 的可见性设置为 false,并重新验证 holder 的父级。

setVisible() 隐藏一个组件,同时它仍然占据它的 space 不像 setHidden() 那样缩小组件。参见:

Form hi = new Form("Visible", BoxLayout.y());

Button r1 = new Button("Regular");
Button invisible = new Button("Invisible");
invisible.setVisible(false);
Button r2 = new Button("Regular");

Button r3 = new Button("Regular");
Button hidden = new Button("Hidden");
hidden.setHidden(true);
Button r4 = new Button("Regular");

hi.add(BoxLayout.encloseX(r1, invisible, r2));
hi.add(BoxLayout.encloseX(r3, hidden, r4));

hi.show();