繁体   English   中英

Java-Swing-在一个JFrame中显示多个JComponent

[英]Java - Swing - displaying multiple JComponents in one JFrame

在游戏中,我想在JFrame同时显示两个JComponent实例。 一个是背景板,另一个是玩家角色。

因此,一个组件(背景)将在另一个组件(字符)之后。 该字符将由几个矩形绘制,因此最常见的情况是它将具有某些完全透明的区域。

怎么做? 我知道通常在将两个组件添加到框架(方法add(Component) )时,只有最后添加的组件可见。 这是通过以下代码完成的:

frame.add(backg); // backg is an instance of a certain class that derives from JComponent
// (...)
frame.add(psc); // psc is an instance of an another class that derives from JComponent
frame.pack();
frame.setVisible(true);

我应该如何更改上面的代码?

首先,如果您想用Java编写游戏,请尝试使用Slick2D提供许多工具和更好的图形功能(被包裹在LWJGL和OpenGL之间)。 其次,如果您决定走Swing路线,这是一个简单的解决方案:

    //Player + background components defined here
    playerComp.setOpaque(false);
    JLayeredPane layer = new JLayeredPane();
    layer.add(backgroundComp,1,0);
    layer.add(playerComp,2,0);

我认为以上评论中都提到了这两种解决方案。 将播放器组件的不透明性设置为false可以使这些透明区域显示播放器后面的组件或背景图像。 如果您熟悉CSS / HTML中的z-index,则JLayeredPane基本上可以通过允许您设置渲染组件的顺序来向Swing添加z-index。 因此,将播放器设置为不透明,然后在背景组件前面进行渲染。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM