如何使用setLayout(null)使JPanel保持onTop(在z轴上)

时间:2016-03-26 20:12:38

标签: java swing jpanel repaint always-on-top

我有一个名为Scene的JPanel,其中包含以下JPanel: FrameProjectorTools

我在Scene上使用null Layout,因为我想使用特定的坐标,所以没有其他布局适合我。我使用以下代码将3个JPanel添加到主JPanel Scene

setLayout(null);
add(Tools);
add(Frame);
add(Projector);

我使用此订单是因为我希望Tools始终位于顶部(在z轴上)。

现在,如果我在导致重新绘制的Projector内部执行某项操作,则Projector会出现在其他图层之上,隐藏Tools。我可以使用一个线程重新绘制整个Scene JPanel,但是当Projector出现在顶部时我看到这个“闪光”,然后继续底部,我不想这样做。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

如果要将组件相对于其z轴放在彼此之上,请考虑使用JLayeredPane作为主容器,然后使用将{1}}方法作为其第二个参数的add(...)方法添加组件。应该使用JLayeredPane.DEFAULT_LAYER添加最底层,我认为这是0.这将允许非oqaque顶部组件通过它们显示较低的组件。