2017-08-11 15 views
-1

どのようにこれを中心にするべきかわかりません。私はlocationRelativeTo nullを使用しようとしましたが、gameBoardは左上隅にとどまりました。 しかし、私はそれを中心にする必要があります。JFrameでオブジェクトを中央に配置する方法

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

オブジェクトをJFrameの中央に配置するか、またはJFrameを画面の中央に配置しますか? – bachph

+0

私が追加したオブジェクトだけです。 –

+1

「[モニタの解像度に関係なく、JFrameを中央に表示する方法を設定する方法」](https://stackoverflow.com/questions/2442599/how-to-set-jframe-to-appear-centered-regardless-モニタ解像度の) –

答えて

1

方法setLocationRelativeTo(Component)のJavadocを参照:コンポーネントがnullであるか、またはこのコンポーネントに関連付けられGraphicsConfigurationウィンドウが画面の中央に配置され、null場合

を。中心点はGraphicsEnvironment.getCenterPointメソッドで取得できます。意味

、あなたは、単に

game.setLocationRelativeTo(null); 

を使用して見ることができますあなたのJFrame gameが画面の中央に配置されます。

1

ここには2つのものを集中させることができます。まず、完全なプログラムウィンドウを中央に配置することができます。これは可能でなければならない

第2の重要な点は、JFrame内のコンポーネント、場合によってはGame2048コンポーネントです。したがって、チュートリアルをお勧めします

ディメンションに関しては、Swingでどのように使用されているかを理解するのは簡単ではありません。

コンポーネントGame2048で寸法を設定して、JFrameに寸法を適用させることをお勧めします。

あなたはJPanelのを使用している場合、あなたはまた、私は追加setAlignmentメソッド

panel.setAlignmentX(Component.CENTER_ALIGNMENT); 
panel.setAlignmentY(Component.CENTER_ALIGNMENT); 
1

オブジェクトのみを使用することができます。

次に、最も簡単な方法は、デフォルトのBorderLayoutではなく、フレームの内容ペインにGridBagLayoutを使用することです。

//game.add(new Game2048()); 
game.setLayout(new GridBagLayout()); 
game.add(new Game2048, new GridBagConstraints()); 

デフォルトの制約を使用すると、利用可能な領域の中央にコンポーネントが配置されます。

詳細については、スウィングチュートリアルのセクションを参照してください。特に、weightx/weighty制約を使用してこれがなぜ機能するかについてのセクションを参照してください。

関連する問題