2016-09-05 3 views
0

私はsetLayout(null)を使用するJFrameを手に入れました。JFrameのボタンの位置が正しくレイアウトされていないのはなぜですか?

ただし、コンテンツペインにアクセスしてフレームのサイズを取得すると、高さは1.0と表示されます。

私はこれをどのように修正できるか知っていますか?

import javax.swing.*; 
import java.awt.*; 

public class Launcher extends JFrame 
{ 
    public Launcher(String title) { 
     super(title); 

     setLayout(null); 
     pack(); 

     setSize(new Dimension(LauncherUtil.LAUNCHER_WIDTH, LauncherUtil.LAUNCHER_HEIGHT)); 
     setLocationRelativeTo(null); 
     setResizable(false); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 

     displayComponents(); 
    } 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       Launcher launch = new Launcher(LauncherUtil.LAUNCHER_TITLE); 
       launch.setVisible(true); 
      } 
     }); 
    } 

    private void displayComponents() { 
     Dimension size = getContentPane().getSize(); 
     JButton launchButton = new JButton("Launch Game"); 
     System.out.println(size.getHeight()); 
     launchButton.setBounds(0, (int)size.getHeight() - 60, (int)size.getWidth(), 60); 
     add(launchButton); 
    } 
} 
+2

適切なレイアウトマネージャを使用して、フレームに 'pack();'メソッドを呼び出すか(すべてのコンポーネントが追加されたとき)、フレームサイズを自分で設定する必要があります( 'setSize(int、int) ')。 –

+2

1)Java GUIは、異なるロケールで異なるPLAFを使用する異なるOS、画面サイズ、画面解像度などで動作する必要があります。したがって、ピクセルの完全なレイアウトには役立ちません。代わりに、レイアウトマネージャや[それらの組み合わせ](http://stackoverflow.com/a/5630271/418556)と[空白](http://stackoverflow.com/a/17874718/)のレイアウトパディングとボーダーを使用してください。 418556)。 2)ASCIIアート、またはGUIの*意図された*レイアウトの簡単な図を最小サイズで提供し、サイズ変更可能な場合は幅と高さを増やします。 –

+0

'launchButton.setBounds(0、(int)size.getHeight() - 60、(int)size.getWidth()、60);'ボトムの幅に伸びたボタン? 'BorderLayout'の' PAGE_END'です。高さを上げるには、 'setMargin(Insets)'を使う(または大きなフォントやアイコンを与える)。 –

答えて

-1

コンテンツ・ペインがデフォルトサイズ1x1pxですJPanelである:ここでは

はコードです。コンテンツペインにコンポーネントを配置せず、パネルに適したサイズを設定していないため、コンテンツペインのサイズは1x1pxのままです。この問題を解決するために

一つの方法は、次の順序でこれらの3つのメソッドを呼び出すことです。しかし

setLayout(null); 
setPreferredSize(new Dimension(300, 400)); 
pack(); 

、あなたはレイアウトマネージャを使用して代わりの手によって、コンポーネントのサイズと位置を 管理する必要があります。

+0

レイアウトマネージャーは私がする必要があることを果たさないし、インセットなどを使っているよりも簡単に配置できると感じている – madcrazydrumma

関連する問題