我需要使组件透明,所以看不到任何东西,但是它仍然可以代替它(与setVisible(false)
不同)。
使用CSS术语,我需要visibility:hidden
而不是display:none
。
理想情况下,它应适用于任何组件,包括容器及其子组件。所以我不认为,继承和覆盖paint
或类似方法是可行的。
一种方法是将您想要有时透明的组件(称为“ trans”)放置在另一个JPanel中(“ holder”),然后将holder放置在您要放置trans的位置。
为了使内容透明,将持有人的首选大小设置为等于trans的首选大小,并将trans的可见性设置为false,然后重新验证持有人的父代。
[setVisible()
]隐藏了一个组件,但它仍然占据其空间,与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();