2011-07-10 81 views
5

これはとても簡単ですが、やりたいことはありますが、それを行う方法を理解できません。 JFrameまたはJPanelでは、コンポーネントを垂直方向にどのように配置しますか?つまり、HTMLでcenterタグを使用するのと同様です。コンポーネントは列にあり、すべてが中央に配置されています。Java - コンポーネントの垂直列を中央に配置する方法は?

私はBoxLayoutをY_AXISとPAGE_AXISで試してみましたが、私にとって奇妙な方法でコンポーネントを整列させています。私はそれがラップするように設定された優先サイズでFlowLayoutを使用しようとしましたが、それを中心にしません。私は、本当に唯一のオプションでない限り、単純なことのためにGridBagLayoutのような強力なものに頼っていません。助けて!

+0

あなたはいくつかのサンプルコードを提供してもらえますか?また、具体的な要件は何ですか? 1つの行にいくつのコンポーネントがありますか? – mre

+0

@little bunny foo foo行ごとに1つのコンポーネント。特定の要件はありません。それは私が非常に頻繁に直面する非常に一般的なレイアウトの質問です。 – Shelley

+0

私は、Webページのすべての間にbrタグを付けて、HTMLのセンタータグと同じようなものを考えています。中央の物事の縦の列。 – Shelley

答えて

8

私が推測しなければならないのは、あなたが異なる「xアラインメント」を持つコンポーネントを使用していると言います。お試しください:

component.setAlignmentX(JComponent.CENTER_ALIGNMENT); 

詳細については、Fixing Alignment ProblemsのSwingチュートリアルのセクションを参照してください。

さらに詳しい情報が必要な場合は、お手数ですがSSCCEをお送りください。

編集:

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

public class BoxLayoutTest extends JFrame 
{ 
    public BoxLayoutTest() 
    { 
     Box box = new Box(BoxLayout.Y_AXIS); 
     add(box); 

     JLabel label = new JLabel("I'm centered"); 
     label.setAlignmentX(JComponent.CENTER_ALIGNMENT); 

     box.add(Box.createVerticalGlue()); 
     box.add(label); 
     box.add(Box.createVerticalGlue()); 
    } 

    public static void main(String[] args) 
    { 
     BoxLayoutTest frame = new BoxLayoutTest(); 
     frame.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     frame.setSize(300, 300); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 
} 
+0

OPは水平にではなく垂直にセンターを探しています。 – mre

+1

次に、接着剤を追加することもできます。 – camickr

+0

+1、優れた仕事。 :) – mre

関連する問題