2012-02-16 37 views
3

私はJava Swingの初心者です。私は3つのボタンを含むフレームを作ろうとしています。 1つは中央に、もう1つは上に、もう1つは右にあります。私は北と東の境界線を同じ幅にしたい。しかし、今、EASTボーダーは北ボーダーよりも広いです。Java Swing:BorderLayoutのボーダー幅/高さを変更する

BorderLayoutでWEST/EAST罫線の幅やNORTH/SOUTH罫線の高さを変更する方法があるかどうかは疑問でした。

+0

*「EASTボーダーがNORTH境界よりも広くなっています」* AFAIUは不可能です。それを示す[SSCCE](http://sscce.org/)を投稿してください。 –

答えて

1

私が知る限り、ボーダー領域の高さ/幅を直接設定することはできません。 これらの領域内に配置するコンポーネントのサイズのみを指定できます。

しかし、既に述べたように、領域間のギャップを指定することができます。

GridBagLayoutはより柔軟ですが、さらに複雑です。スイング中

ビルのレイアウトは必ずしも容易ではない - 多分MigLayout(サードパーティのライブラリ)を使用すると、あなたのために物事を単純化する:http://www.miglayout.com/

1

あなたはすでにあなたのレイアウトを制御するためのパネルを使用することができ、BorderLayoutのを使用していると仮定すると、ボーダーフィールを作成します。次に、setPreferredSize(new Dimension(int、int))を使用して、(int、int)がそれぞれ幅と高さである好ましいサイズを要求できます。

JPanel jLeft = new JPanel(); 
JPanel jRight = new JPanel(); 
JPanel jTop = new JPanel(); 
JPanel jBottom = new JPanel(); 

add(jLeft, "West"); 
jLeft.setPreferredSize(new Dimension(40, 480)); 

add(jRight, "East"); 
jRight.setPreferredSize(new Dimension(40, 480)); 

add(jTop, "North"); 
jTop.setPreferredSize(new Dimension(640, 40)); 

add(jBottom, "South"); 
jBottom.setPreferredSize(new Dimension(640, 40)); 

東と西の境界線の幅は、北と南の境界線の高さと一致するので、上記の例では、同じ厚さを持っているすべての国境を要求します。ボーダーのためのコードは次のようになります。これは、サイズのフレーム(640,480)の場合です。あなたは、このようなものを使用してフレームにあなたのボタンを追加することができます

JButton button = new JButton(); 
jTop.add(button); 
button.setPreferredSize(new Dimension(60, 20)); 

あなたがここにsetPreferredSizeの使用の別の良い例を見つけることができます:https://stackoverflow.com/a/17027872

関連する問題