JFrame分层/重叠

时间:2014-05-27 15:41:08

标签: java jframe

我正在开发Java游戏,我的主要问题是在Jframe上同时放置多个组件。在你们对我大喊大叫之前,我已经完成了布局管理器和组件大小的建议。

我终于意识到了我的问题。我问完全错误的问题。我的主要问题是:

如何在JFrame中允许两个组件同时在同一区域中可见?根据我问过的一些人,这是不可能的,因此是布局管理者。但无论如何要解决这个问题?也许在Photoshop中使用类似图层的东西?我知道HTML中有Z-Index。 Java中有一个吗?

谢谢你们!

对不起我以前的不好问题:(感谢所有帮助,尤其是Camickr。

PS:我希望我把这个问题写得正确:s

抗体

3 个答案:

答案 0 :(得分:0)

看看JLayeredPane,它是一个允许分层的容器:http://docs.oracle.com/javase/7/docs/api/javax/swing/JLayeredPane.html

答案 1 :(得分:0)

  

如何在JFrame中允许两个组件同时在同一区域中可见?

您仍然可以使用布局管理器。您如何构建GUI?始终存在组件层次结构。每个父组件都有一个子组件。

JLabel child = new JLabel("Child Label");
JPanel parent = new JPanel();
parent.add( child );
frame.add( parent );

现在你有了一个框架层次结构 - >内容窗格 - >父母 - >儿童。根据您在每个级别使用的布局管理器,您可以实现不同的效果。

您始终可以在每个组件上使用BorderLayout,以便添加到其中的组件占用所有空间。当然,当您开始在彼此之上添加面板时,您需要使用setOpaque(false),以便可以看到所有组件。

其他4个帖子的关键点在于,除非您的组件具有首选尺寸,否则布局无法正确布置组件。

答案 2 :(得分:-1)

如果您正在制作Java游戏,则应使用Canvas绘制所有组件。你可以覆盖画布' paint(Graphics)方法,并遍历您想要在那里绘制的所有组件。然后,您可以轻松地将两个组件绘制在一起(顶部组件是稍后在循环中绘制的组件)。

请参阅the JavaDoc for Canvas