2010-12-20 5 views
1

私はJavaアプリケーション用にグリッドバッグレイアウトを使用していますが、問題はコンポーネントをページ開始位置に配置していないことです。私も働かなかったことも、 GridBagLayoutページ開始時にコンポーネントを配置しない

gbc.anchor = GridBagConstraints.FIRST_LINE_START; 

を試してみました

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

public class Trial extends JFrame { 

    JLabel banner; 
    Container c; 
    GridBagConstraints gbc = new GridBagConstraints(); 
    GridBagLayout gbl; 
    public Trial() 
    { 
    setTitle("Attendence Manager"); 
    setIconImage(Toolkit.getDefaultToolkit().getImage("images/icon.png")); 
    Dimension dim= Toolkit.getDefaultToolkit().getScreenSize(); 
    setSize(new Dimension(dim.width-20,dim.height-100)); 
    c= getContentPane(); 
    gbl= new GridBagLayout(); 
    setLayout(gbl); 
    banner = new JLabel(new ImageIcon("images/banner.jpg")); 
    gbc.anchor=GridBagConstraints.PAGE_START; 
    gbc.gridx=0; 
    gbc.gridy=0; 
    gbc.gridwidth=GridBagConstraints.REMAINDER; 
    c.add(banner,gbc); 
    this.setVisible(true); 
    addWindowListener(new MyWindowAdapter()); 
    } 

    public static void main(String[] args) { 
    Trial t = new Trial(); 
    } 

} 
class MyWindowAdapter extends WindowAdapter 
{ 
    //LoginPage sp; 
    public MyWindowAdapter() 
    { 
    } 

    @Override 
    public void windowClosing(WindowEvent we) 
    { 
    System.exit(0); 
    } 
} 

:ここで私が使用していたコードです。これは私が取得しています出力されます:

Image

答えて

1

まずあなたが

gbc.fill = GridBagConstraints.BOTH; 
gbc.weightx = 1.0; 
gbc.weighty = 1.0; 

を設定する必要がありますが、これだけで全体のスペースではないJLabelの内部にアイコンを埋めるためのJLabelを行います。画像を拡大して全体のスペースを使いたい場合。画像をBufferedImageに読み込み、paintComponent()メソッドをオーバーライドして、BufferedImageのスケーリングされたインスタンスを描画することをお勧めします。このように:

public Trail() { 
    setTitle("Attendence Manager"); 
    setIconImage(Toolkit.getDefaultToolkit().getImage("images/icon.png")); 
    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); 
    setSize(new Dimension(dim.width - 20, dim.height - 100)); 
    c = getContentPane(); 
    gbl = new GridBagLayout(); 
    setLayout(gbl); 

    try { 
     final BufferedImage image = ImageIO.read(new File("images/sample.jpg")); 
     banner = new JLabel(){ 
      public void paintComponent(Graphics g) { 
       g.drawImage(image, 0, 0, getWidth(), getHeight(), null); 
      } 
     }; 
     gbc.fill = GridBagConstraints.BOTH; 
     gbc.weightx = 1.0; 
     gbc.weighty = 1.0; 
     c.add(banner, gbc); 
    } 
    catch (IOException ex) { 
     Logger.getLogger(Trail.class.getName()).log(Level.SEVERE, null, ex); 
    } 

    this.setVisible(true); 
    addWindowListener(new MyWindowAdapter()); 
} 
関連する問題