2011-07-31 10 views
2

グリッドバッグレイアウトで指定したパネルがあります。私は基本的に1列と4列を持っています。ラベルはデフォルトで中央に揃えられています。どのように私はそれらを左に揃えますか?JLabelをグリッドパネルレイアウトのパネルの左に揃えます。

private void addLabel(String name, int gridx, int gridy, int anchor){ 
      gbc.gridx=gridx; 
      gbc.gridy=gridy; 
      JLabel label=new JLabel(name); 
      gbc.fill=GridBagConstraints.HORIZONTAL; 
      gbag.setConstraints(label, gbc); 
      panel1.add(label); 

発信者回線は、次のとおりです。

gbc=new GridBagConstraints(); 
     gbag=new GridBagLayout(); 
panlel1.setLayout(gbag); 
addLabel(" Exemption type", 0, 0,anchor); 
+0

さらに、gbc.anchor = GridBagConstraints.WESTを設定すると、私のために働いた... – m13r

答えて

1

JLabel myLabel = new JLabel("Fubar", SwingConstants.LEFT); 

を試すか、あなたはmyLabel.setHorizontalAlignment(SwingConstants.LEFT);

編集を呼び出すことにより、既に作成したJLabelの上で同じことを行うことができます。たとえば:

import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 

import javax.swing.*; 

public class GridBagExample { 
    private static void createAndShowUI() { 
     String[] data = {"one", "two", "three", "four"}; 

     JPanel panel = new JPanel(new GridBagLayout()); 
     GridBagConstraints gbc = new GridBagConstraints(); 
     gbc.gridx = 0; 
     gbc.gridy = 0; 
     gbc.gridwidth = 1; 
     gbc.gridheight = 1; 
     gbc.anchor = GridBagConstraints.WEST; 
     gbc.fill = GridBagConstraints.BOTH; 
     gbc.weightx = 1.0; // **** comment this line out to see effect **** 
     gbc.weighty = 1.0; // **** comment this line out to see effect **** 

     for (int i = 0; i < data.length; i++) { 
     JLabel label = new JLabel(data[i]); 
     gbc.gridy = i; 
     panel.add(label, gbc); 
     } 

     JFrame frame = new JFrame("GridBagExample"); 
     frame.getContentPane().add(panel); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     java.awt.EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      createAndShowUI(); 
     } 
     }); 
    } 
} 
+0

私はうまくいきませんでした。私はそれがGridbagのレイアウトで何かをしなければならないと思う。 –

+0

@ Kaushik:それがうまくいかなければ、もっと情報が必要になるだろう。問題を示す最小限のコンパイル可能なコード例を作成して投稿することを検討してください。[SSCCE](http://SSCCE.org)(リンクを確認してください)。 –

+0

@Kaushik:また、GridBagConstraints.fill、anchor、およびGridBagConstraints.weightxを適切に設定しますか? –

0

APIを読んでください。私は方法があると信じている

setHorizontalAlignment(...); 
+0

これはGridBagLayoutコンテナでは動作しません – m13r

0

これは私がこれを解決した方法です。 重要な部分はある

gbc.anchor = GridBagConstraints.WEST; 

上記のあなたが欲しいレイアウトセルを指定し、右のあなたの前のパネルにコンポーネントを追加した直後に呼び出されます。

のGridBagConstraints アンカー

コンポーネントがその表示 面積よりも小さい場合、このフィールドは使用されています。これは、表示領域内のどこに コンポーネントを配置するかを決定します。 ...

以下は基本的にどのように実装したのですか。

public class ControlPanel extends JPanel{...  
     ControlPanel(){ 
      this.setLayout(new GridBagLayout()); 
      //create components 
      ... 

      GridBagConstraints gbc = new GridBagConstraints(); 

      //space components out a little 
      gbc.insets = new Insets(5,5,5,5); 

      gbc.gridx = 0; 
      gbc.gridy = 0; 
      this.add(button_btn,gbc); 

      gbc.gridx = 1; 
      gbc.gridy = 0; 
      this.add(spinner1_pnl,gbc); 

      gbc.gridx = 2; 
      gbc.gridy = 0; 
      this.add(spinner2_pnl,gbc); 

      gbc.gridx = 3; 
      gbc.gridy = 0; 
      this.add(checkbox1_chk,gbc); 

      gbc.gridx = 4; 
      gbc.gridy = 0; 
      this.add(checkbox2_chk,gbc); 

      gbc.gridx = 0; 
      gbc.gridy = 1; 
      gbc.gridwidth = 3; //span 3 columns 
      gbc.anchor = GridBagConstraints.WEST; 
      this.add(results_lbl,gbc); 
     } 
    } 

この場合、私は他のいくつかのコンポーネントの下にラベルを貼りますが、最も重要なことはラベルがそのセル内に揃っていることです。

関連する問題