我试过看,但没有问题有帮助。 这是我开始的代码:
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 1
与player
靠近。
有什么帮助吗?
答案 0 :(得分:2)
默认情况下,JFrame使用BorderLayout。如果您没有指定放置组件的位置,则会将其放入BorderLayout.CENTER
。您不能将2个或更多组件放在同一位置。为了防止这种不良行为,您必须设置不同的约束。
例如:
jframe.add(someComponent, BorderLayout.LINE_END);//constraint indicating position
在教程中阅读更多内容:How to use BorderLayout。
如果此布局不符合您的需要,请尝试使用其他LayoutManager或混合它们。