我不确定我应该如何集中注意力。我尝试使用locationRelativeTo null,但gameBoard停留在左上角。 但我需要把它放在中心位置。
public static void main(String[] args) {
JFrame game = new JFrame();
game.setTitle("Game2048");
game.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
game.setSize(420, 700);
game.setResizable(false);
game.add(new Game2048());
// help here >>>> game.setLocation();
game.setVisible(true);
}
答案 0 :(得分:1)
请参阅方法setLocationRelativeTo(Component)
的javadoc:
如果组件为
null
,或与此组件关联的GraphicsConfiguration
为null
,则窗口将位于屏幕中央。可以使用GraphicsEnvironment.getCenterPoint
方法获得中心点。
这意味着,你可以看到只需使用
game.setLocationRelativeTo(null);
,您的JFrame game
将被放置在屏幕的中央。
答案 1 :(得分:1)
你可以在这里集中两件事。首先,您可以将整个程序窗口置于中心位置。这应该是
game.setLocationRelativeTo(null);
中心的第二件事是JFrame中的组件,在你的情况下是Game2048组件。因此,我可以推荐教程A Visual Guide to Layout Managers
在尺寸方面,要理解它们在Swing中的使用方式并不总是很简单。
我建议您在Game2048组件中设置尺寸,然后让JFrame应用尺寸。
如果您使用JPanel,您还可以使用setAlignment方法
panel.setAlignmentX(Component.CENTER_ALIGNMENT);
panel.setAlignmentY(Component.CENTER_ALIGNMENT);
答案 2 :(得分:1)
只有我添加的对象。
然后最简单的方法是使用GridBagLayout作为框架的内容窗格(而不是默认的BorderLayout)。
//game.add(new Game2048());
game.setLayout( new GridBagLayout() );
game.add(new Game2048, new GridBagConstraints());
使用默认约束将使组件在可用空间中居中。
阅读How to use GridBagLayout上Swing教程中的部分以获取更多信息,尤其是有关使用weightx / weighty约束以了解其工作原理的部分。