2010-11-22 3 views
6

私は、JFrameに描画された3つのJPanelを持っています。これらは現在、すべてデフォルトのFlowLayoutを使用するように設定されています。私は、これらが1つの列で他のものよりも上になるようにしたいと思います。Java Swing:FlowLayout JPanelsが隣に座っていますか?

しかし、私は、これらのコンポーネントが同じライン上で互いに隣り合っていることがわかりました。

FlowLayout JPanelの自然な幅は、その内容の合計ですか?もしそうなら、リージョンの幅を強制的にJFrameの幅にする方法はありますか?

「トップ」パネルと「ボトム」パネルがJFrameの幅全体にまたがるコンテンツを持ち、「中間」パネルが空の場合、「中間」パネルでは多くのHTMLの古い「

のような2の間の空間。

おかげで、

ベン

答えて

1

あなたはコンポーネントでYxZグリッドを作成するGridLayoutを使用することができます。より正確には、使用できるレイアウトを構築するにはGridBagLayoutは、poの完全な制御を提供しますネストされたコンポーネントのサイジングとサイジング。

0

私はいつもNetBeansに行っています。以来、私はJPanelやJFrameにコンポーネントを配置するのに手間をかけずにFree Designを作ることができます:)あなたはそれを考慮することができます。

2

縦型レイアウトを作成する場合は、囲みコンテナにBoxLayoutを使用することを検討してください。これは、y軸に沿ってレイアウトコンポーネントに設定できます。

4

ジムが述べたように、コンポーネントを線形に整列させる必要がある場合は、BoxLayoutが正しい選択です。あなたは本当にLayoutManagersの基本セットを理解するためにintroduction to layout managersを読みによいでしょう

import javax.swing.BorderFactory; 
import javax.swing.BoxLayout; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

/** 
* 
* @author nicholasdunn 
*/ 
public class BoxLayoutExample extends JPanel { 

    public BoxLayoutExample() { 
     JPanel topPanel = new JPanel(); 
     JPanel middlePanel = new JPanel(); 
     JPanel bottomPanel = new JPanel(); 

     topPanel.setBorder(BorderFactory.createEtchedBorder()); 
     middlePanel.setBorder(BorderFactory.createEtchedBorder()); 
     bottomPanel.setBorder(BorderFactory.createEtchedBorder()); 

     topPanel.add(new JLabel("Top")); 
     middlePanel.add(new JLabel("Middle")); 
     bottomPanel.add(new JLabel("Bottom")); 

     BoxLayout boxLayout = new BoxLayout(this, BoxLayout.PAGE_AXIS); 
     setLayout(boxLayout); 
     add(topPanel); 
     add(middlePanel); 
     add(bottomPanel); 

    } 

    public static void main(String[] args) { 
     JFrame frame = new JFrame(""); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JPanel panel = new BoxLayoutExample(); 
     frame.add(panel); 
     frame.pack(); 
     frame.setVisible(true); 
    } 
} 

alt text

:ここ

は一例です。複雑なレイアウトを行う時間が来たら、 MigLayoutを使ってGridBagLayoutを習得してください。感謝します。

関連する問題