Java如何在JFrame中添加多个JPanel对象?

3

我是一名初学者,不知道如何将更多的对象添加到JFrame中。 我应该如何将超过一个JPanel对象添加到JFrame中? 下面是我尝试过的内容。

谢谢你的帮助。

public class Init extends JFrame{

    public Init(){
        super("Ball");

        Buttons t = new Buttons();

        JumpingBall b1 = new JumpingBall();
        JumpingBall b2 = new JumpingBall();

        t.addBall(b1);
        t.addBall(b2);

        add(b1);
        add(b2);


        setSize(500,500);
        setResizable(false);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
    }

}

你应该使用布局。阅读此内容:http://docs.oracle.com/javase/tutorial/uiswing/layout/ - Ivan
你有什么问题? - Nick Louloudakis
3个回答

1

您可以使用add方法在JFrame中添加多个JPanel对象。如果只显示一个面板,您可能需要更改布局选项或使用布局管理器(请参阅此处获取更多信息)。


好的,很高兴听到。不要忘记投票选出最佳答案,无论哪个回答你认为更完整回答了你的问题。 - Nick Louloudakis

1
假设JumpingBall扩展了JPanel,您可能想查看这里的Java布局管理器:链接。默认情况下,JFrameLayoutBorderLayout,如果您没有指定要添加组件的位置,则BorderLayout将默认将其放在中心。在BorderLayout中,您不能在同一区域中拥有多个组件。因此,在您的示例中,您最终只会在框架中拥有第二个JumpingBall面板。如果您想要在中心拥有多个组件,则必须创建一个JPanel并使用不同的布局将这些组件添加到其中。常见的三种布局是BorderLayoutFlowLayoutGridLayout。请查看上面提供的链接以了解如何排列组件。

1
你只看到了一个面板,是因为它们重叠在一起。只需为你的面板组件提供 setbound(x,y,x1,y1),你就可以看到你的面板位置了。
或者使用 setLayout(new FlowLayout());,这将根据其他组件对其进行排序,这样你就不会覆盖彼此。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接