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; } }