2011-07-11 8 views
0

基本的に、JLabelコンポーネントを取得して、親JPanelの上部に揃える必要があります。ここスウィングコンポーネントを垂直方向に整列させる

public static JPanel createBoldLabelPanel(String labelText, Component c, Font font, Color c1){ 
    c.setFont(new Font(font.getName(), Font.PLAIN, font.getSize())); 
    c.setBackground(c1); 
    JPanel jp = new JPanel(); 
    if(!labelText.isEmpty()){ 
     jp.setLayout(new BoxLayout(jp, BoxLayout.LINE_AXIS)); 
     JLabel label = new JLabel(labelText); 
     label.setFont(new Font(font.getFontName(), Font.BOLD, font.getSize())); 
     label.setBackground(c1); 
     label.setAlignmentY(Component.TOP_ALIGNMENT); 
     jp.add(label); 
    } 
    jp.add(c); 
    jp.setBackground(c1); 
    return jp; 
} 

そして、私のテストコードです:あなたはそれを実行した場合

public static void main(String[] args){ 
    JFrame frame = new JFrame(); 
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
    JTextArea jta = new JTextArea("Sed ut perspiciatis, unde " + 
      "omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem " + 
      "aperiam eaque ipsa, quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt, " + 
      "explicabo. Nemo enim ipsam voluptatem, quia voluptas sit, aspernatur aut odit aut fugit, sed quia " + 
      "consequuntur magni dolores eos, qui ratione voluptatem sequi nesciunt, neque porro quisquam est, " + 
      "qui dolorem ipsum, quia dolor sit amet, consectetur, adipisci[ng] velit, sed quia non numquam [do] " + 
      "eius modi tempora inci[di]dunt, ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim " + 
      "ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex " + 
      "ea commodi consequatur? Quis autem vel eum iure reprehenderit, qui in ea voluptate velit esse, " + 
      "quam nihil molestiae consequatur, vel illum, qui dolorem eum fugiat, quo voluptas nulla pariatur?"); 
    jta.setEditable(false); 
    jta.setLineWrap(true); 
    jta.setWrapStyleWord(true); 
    frame.add(DisplayPanel.createBoldLabelPanel("Test:", jta, new Font(Font.SERIF, Font.PLAIN, 14), Color.GRAY)); 
    frame.setSize(400, 400); 
    frame.setVisible(true); 
} 

が、それはまだない場合、私は、明らかになるであろう欲しいもの

は、ここに私のコードです。ありがとう!

As you can see, I need "Test:" moved up

+0

だから、問題は何ですか?私はあなたのコードを実行し、問題が何かを推測する必要はありません。 –

+0

最初の文章で述べたように、「基本的には、JLabelコンポーネントを親JPanelの上部に合わせる必要があります。 – MirroredFate

+0

その写真を追加するまでは、あなたのコードの問題点は何も言えませんでした。 –

答えて

4

はまた、あなたのテキスト領域のaligmentプロパティを設定します。

jta.setAlignmentY(Component.TOP_ALIGNMENT); 

その後、両方のパネル内のトップに整列されます。

+0

+1、これが正しいです。 @MirroredFate、私は前に提供したコードがコンポーネントを一番上に揃えていなかったことを謝ります。 :/ – mre

1

それともBorderLaoyut

へのLayoutManagerを変更
public static JPanel createBoldLabelPanel(String labelText, Component c, Font font, Color c1) { 
    c.setFont(new Font(font.getName(), Font.PLAIN, font.getSize())); 
    c.setBackground(c1); 
    JPanel jp = new JPanel(); 
    if (!labelText.isEmpty()) { 
     //jp.setLayout(new BoxLayout(jp, BoxLayout.LINE_AXIS)); 
     jp.setLayout(new BorderLayout()); 
     JLabel label = new JLabel(labelText); 
     label.setFont(new Font(font.getFontName(), Font.BOLD, font.getSize())); 
     label.setBackground(c1); 
     label.setAlignmentY(Component.TOP_ALIGNMENT); 
     jp.add(label, BorderLayout.NORTH); 
    } 
    jp.add(c); 
    jp.setBackground(c1); 
    return jp; 
} 
関連する問題