gridBagLayout简明例子

GridBagLayout比较难懂。

 

写了个简单示例 ,如下,有时间再来解释:

 

把它放入ECLIPSE里,运行一下,自己感受感受,用到的图片自己随便找个,10*10的的就行。

 

package sh.xjh.invoke;
import javax.swing.*;

import java.awt.*;
public class TwoColTwoRowPanel extends JFrame {
	private JPanel jContentPane = null;
	private JButton jb1;
	private JButton jb2;
	private JButton jb3;
	private JButton jb4;
	GridBagConstraints c;
	GridBagLayout gridBagLayout;
	
	//sub panel
	private JPanel jpUpHeadImg;
	private JPanel jpDownHeadImg;
	
	//subScrollPane
	private JScrollPane jspHistory;
	private JScrollPane jspSendMsg;
	
	//jtextArea
	private JTextArea jtaHistory;
	private JTextArea jtaSendMsg;
	
	//jlabel
	private JLabel jlUpHeadImg;
	private JLabel jlDownHeadImg;
	
	//jb
	JButton jbSendMsg;
	
	public TwoColTwoRowPanel(){
		
		initilize();
		
		//set size
		this.setSize(800,600);		
		//set location
		this.setLocation(200, 100);
		//set visible
		this.setVisible(true);
		//set default close operation
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		TwoColTwoRowPanel mgbl=new TwoColTwoRowPanel();
	}
	
	private void initilize(){
		this.setContentPane(this.getContentPane());
	}

	@Override
	public JPanel getContentPane() {
		// TODO Auto-generated method stub
		if(jContentPane==null){
			jContentPane=new JPanel();
			
			//set layout
			 gridBagLayout=new GridBagLayout();
			jContentPane.setLayout(gridBagLayout);
			
			
			c=new GridBagConstraints();
			//add jspHistory
			c.fill=GridBagConstraints.BOTH;
			c.gridx=0;
//			c.gridy=0;
			c.gridwidth=1;
			c.gridheight=1;
			c.weightx=0.9;
			c.weighty=0.8;
//			makeButton(jContentPane,this.getJb1(),c,gridBagLayout);
			this.createSubComp(jContentPane, this.getJspHistory(), c, gridBagLayout);
			
			//add jpUpHeadImg
//			c.fill=GridBagConstraints.BOTH;
			c.gridx=1;
//			c.gridy=0;
			c.gridwidth=1;
			c.weightx=0.1;
			c.weighty=0.2;
//			makeButton(jContentPane,this.getJb2(),c,gridBagLayout);
			this.createSubComp(jContentPane, this.getJpUpHeadImg(), c, gridBagLayout);
			
			
			//add JspSendMsg
//			c.fill=GridBagConstraints.BOTH;
			c.gridx=0;
			c.gridy=1;
			c.gridwidth=1;
			c.gridheight=1;
			c.weightx=0.9;
			c.weighty=0.8;
//			makeButton(jContentPane,this.getJb3(),c,gridBagLayout);
			this.createSubComp(jContentPane, this.getJspSendMsg(), c, gridBagLayout);
			
			//add jpDownHeadImg
			c.gridx=1;
			c.gridy=1;
//			c.fill=GridBagConstraints.NONE;
			c.gridwidth=1;
			
			
			c.weightx=0.1;
			c.weighty=0.2;
//			makeButton(jContentPane,this.getJb4(),c,gridBagLayout);
			this.createSubComp(jContentPane, this.getJpDownHeadImg(), c, gridBagLayout);
			
			
			//add jbSendMsg
			c.gridx=1;
			c.gridy=2;
			c.gridwidth=1;
			this.createSubComp(jContentPane, this.getJbSendMsg(), c, gridBagLayout);
			
		}
		
		return jContentPane;
	}

	public JButton getJb1() {
		if(jb1==null){
			jb1=new JButton("Button1");
		}
		return jb1;
	}

	public JButton getJb2() {
		if(jb2==null){
			jb2=new JButton("Button2");
		}
		return jb2;
	}

	public JButton getJb3() {
		if(jb3==null){
			jb3=new JButton("Button3");
		}
		return jb3;
	}

	public JButton getJb4() {
		if(jb4==null){
			jb4=new JButton("Button4");
		}
		return jb4;
	}
	
	/**
	 * makeButton with constraints
	 * @param jpanel
	 * @param jb
	 * @param c
	 */
	private void makeButton(JPanel jpanel
			,JButton jb
			,GridBagConstraints c
			,GridBagLayout gridBagLayout){
		gridBagLayout.setConstraints(jb,c);
		jpanel.add(jb);
	}
	
	
	/**
	 * createSubPanel
	 * @param jpanel
	 * @param subJpanel
	 * @param c
	 * @param gridBagLayout
	 */
	private void createSubComp(JPanel jpanel
			,JComponent subPanel
			,GridBagConstraints c
			,GridBagLayout gridBagLayout){
		gridBagLayout.setConstraints(subPanel,c);
		jpanel.add(subPanel);
		
	}

	

	

	public JScrollPane getJspHistory() {
		if(jspHistory==null){
			jspHistory=new JScrollPane(this.getJtaHistory());
			
		}
		return jspHistory;
	}

	public JScrollPane getJspSendMsg() {
		if(jspSendMsg==null){
			jspSendMsg=new JScrollPane(this.getJtaSendMsg());
		}
		return jspSendMsg;
	}

	public JTextArea getJtaHistory() {
		if(jtaHistory==null){
			jtaHistory=new JTextArea("History:");
			jtaHistory.setEditable(false);
		}
		return jtaHistory;
	}

	public JTextArea getJtaSendMsg() {
		if(jtaSendMsg==null){
			jtaSendMsg=new JTextArea();
		}
		return jtaSendMsg;
	}
	
	public JPanel getJpUpHeadImg() {
		if(jpUpHeadImg==null){
			jpUpHeadImg=new JPanel();
			jpUpHeadImg.setLayout(new BorderLayout());
			jpUpHeadImg.add(this.getJlUpHeadImg());
//			jpUpHeadImg.setBackground(new Color(125,125,125));
		}
		return jpUpHeadImg;
	}

	
	public JPanel getJpDownHeadImg() {
		if(jpDownHeadImg==null){
			jpDownHeadImg=new JPanel();
			jpDownHeadImg.setLayout(new BorderLayout());
			jpDownHeadImg.add(this.getJlDownHeadImg());
//			jpDownHeadImg.setBackground(Color.blue);
		}
		return jpDownHeadImg;
	}

	public JLabel getJlUpHeadImg() {
		jlUpHeadImg=new JLabel(new ImageIcon("image/djwanHead.jpg"));
		return jlUpHeadImg;
	}

	public JLabel getJlDownHeadImg() {
		jlDownHeadImg=new JLabel(new ImageIcon("image/xiaoXinXinHead2.jpg"));
		return jlDownHeadImg;
	}

	public JButton getJbSendMsg() {
		if(jbSendMsg==null){
			jbSendMsg=new JButton("send");
		}
		return jbSendMsg;
	}
	

}

你可能感兴趣的:(GridBagLayout)