Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在一个框架上相互重叠添加多个面板_Java_Swing_Jframe_Jpanel - Fatal编程技术网

Java 在一个框架上相互重叠添加多个面板

Java 在一个框架上相互重叠添加多个面板,java,swing,jframe,jpanel,Java,Swing,Jframe,Jpanel,我正在做一个项目,我正在展示一个正方形和一个圆形。 圆圈自行移动,但用户通过箭头键移动正方形。每当圆圈碰到正方形时,它就会反弹 正方形和圆形是不同的类别(2个不同的面板)。我想将这两个元素添加到一个框架中,一个放在另一个上面,这样两个元素都是可见的。 有人能告诉我怎么做吗 JFrame n = new JFrame(); n.setTitle("Background Color for JFrame"); n.setSize(1000,600); n.setLocationRelativeTo(

我正在做一个项目,我正在展示一个正方形和一个圆形。 圆圈自行移动,但用户通过箭头键移动正方形。每当圆圈碰到正方形时,它就会反弹

正方形和圆形是不同的类别(2个不同的面板)。我想将这两个元素添加到一个框架中,一个放在另一个上面,这样两个元素都是可见的。 有人能告诉我怎么做吗

JFrame n = new JFrame();
n.setTitle("Background Color for JFrame");
n.setSize(1000,600);
n.setLocationRelativeTo(null);
n.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

n.setResizable(false);

n.add(new Ball());
n.add(new Team());

n.setVisible(true);

默认情况下,假定层次结构中相同级别的用户界面组件不重叠。您可以通过使用
setOpaque(false)
使组件透明来明确解决此问题,前提是您只需要绘制组件中所需的内容,例如,对于JPanel,请确保不绘制其背景。在执行此操作时,哪个组件比另一个组件具有优先性仍然有些随机(依赖于实现)

有一个专门为此设计的组件:JLayeredPane(),它管理可以放置组件的“层”,让您完全控制哪些覆盖哪些覆盖


由于JComponent的全部功能不需要表示一个简单的图形元素,因此游戏通常自己实现这一点。在这种情况下,使用单个组件作为“画布”,利用paintComponent的重写将自定义对象绘制到画布上(请参见:)

如果您想在swing中实现这一点,听起来,我真的建议创建一个扩展JPanel的新类,并重写它的paintComponent方法。在这个方法中,您使用参数中的图形来绘制画布。然后,您可以将此自定义面板而不是两个单独的组件添加到JFrame中,并在其中处理渲染。然后,此渲染面板可以跟踪需要渲染的所有对象,最好使用draw(Graphics g)方法实现一些接口(Drawable?)。这样,您就可以使需要呈现的类实现可绘制接口,在渲染面板中将其作为一个列表,并在paintComponent方法中迭代它们,然后在Drawables上调用draw。

这将是任何类型的游戏吗?是的,这是一场足球游戏:)那么使用一个JPane并使用Graphics2D将圆组件绘制到它可能是一个更好的主意。然后你的游戏对象将简单地子类化
java.lang.Object
,并包含一个
draw()
方法,该方法将图形作为参数。愚蠢的问题,这是我在过去12个小时内看到的第二个问题,问的是完全相同的问题……是否存在某种分配?