我有一个名为Scene
的JPanel,其中包含以下JPanel:
Frame
,Projector
,Tools
。
我在Scene
上使用null Layout,因为我想使用特定的坐标,所以没有其他布局适合我。我使用以下代码将3个JPanel添加到主JPanel Scene
。
setLayout(null);
add(Tools);
add(Frame);
add(Projector);
我使用此订单是因为我希望Tools
始终位于顶部(在z轴上)。
现在,如果我在导致重新绘制的Projector
内部执行某项操作,则Projector
会出现在其他图层之上,隐藏Tools
。我可以使用一个线程重新绘制整个Scene
JPanel,但是当Projector
出现在顶部时我看到这个“闪光”,然后继续底部,我不想这样做。
有什么想法吗?
答案 0 :(得分:3)
如果要将组件相对于其z轴放在彼此之上,请考虑使用JLayeredPane作为主容器,然后使用将{1}}方法作为其第二个参数的add(...)
方法添加组件。应该使用JLayeredPane.DEFAULT_LAYER
添加最底层,我认为这是0.这将允许非oqaque顶部组件通过它们显示较低的组件。