如何在Java中向一个JFrame添加2个或更多对象?

时间:2014-02-25 15:52:35

标签: java swing object jframe

我试过看,但没有问题有帮助。 这是我开始的代码:

    Player player = new Player();
    Block1 block1 = new Block1();
    JFrame ow = new JFrame();
    ow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    ow.setSize(500,500);
    ow.setTitle("My Game");
    ow.setVisible(true);
    ow.setLocation(400, 100);
    ow.add(block1);
    ow.add(player);

但它只会添加最后一个,有人说(当我搜索旧问题时)它会删除前一个,因为它们都在同一个位置。 所以我这样修改了它:

    JPanel jp = new JPanel();
    jp.setSize(500, 500);
    Player player = new Player();
    Block1 block1 = new Block1();
    JFrame ow = new JFrame();
    jp.setLayout(new BoxLayout(jp, BoxLayout.Y_AXIS));
    jp.add(player);
    jp.add(block1);
    ow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    ow.setSize(500,500);
    ow.setTitle("My Game");
    ow.setVisible(true);
    ow.setLocation(400, 100);
    ow.add(jp);

它确实有效,将它们都显示出来但是......它有两个方形面板,所以我不能靠block 1player靠近。 有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

默认情况下,JFrame使用BorderLayout。如果您没有指定放置组件的位置,则会将其放入BorderLayout.CENTER。您不能将2个或更多组件放在同一位置。为了防止这种不良行为,您必须设置不同的约束。

例如:

jframe.add(someComponent, BorderLayout.LINE_END);//constraint indicating position

在教程中阅读更多内容:How to use BorderLayout

如果此布局不符合您的需要,请尝试使用其他LayoutManager或混合它们。

查看A Visual Guide to LayoutManagers