2012年8月3日星期五

GridBagLayout 例

GridBagLayout 例

import java.awt.Dimension;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.GridLayout;import java.awt.Insets;import javax.swing.*;public class Layout2 {    /**     * @param args     */    public static void main(String[] args) {        new Layout2Frame().setVisible(true);    }}class Layout2Frame extends JFrame {    Layout2Frame(){        this.setTitle("Layout2 Test");        this.setSize(800,800);        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        JPanel jp = new JPanel();        jp.setLayout(new GridBagLayout());                jp.add(new JScrollPane(new JTextArea(1,5)),new Constraint(0,0,1,3));                JPanel p1 = new JPanel();        p1.setLayout(new GridLayout(2,1));        p1.setBorder(BorderFactory.createEtchedBorder());        p1.add(new JLabel("标  签"));        p1.add(new JTextField(5));                jp.add(p1,new Constraint(3,0));        jp.add(new MPanel2(),new Constraint(4,0,1,2));        jp.add(new MPanel2(),new Constraint(6,0,1,1));                        JPanel p2 = new JPanel();        p2.setLayout(new GridLayout(2,1));        p2.setBorder(BorderFactory.createEtchedBorder());        p2.add(new JButton("按钮"));        p2.add(new JButton("按钮"));                        jp.add(p2,new Constraint(0,1));        jp.add(new MPanel2(),new Constraint(1,1));        jp.add(new MPanel2(),new Constraint(2,1));        jp.add(new JScrollPane(new JTextArea(1,5)),new Constraint(3,1));        MPanel2 mp = new MPanel2();        /*mp.add(new JButton("hellp"));        mp.add(new JButton("hellp"));        mp.add(new JButton("hellp"));        mp.add(new JButton("hellp"));*/                jp.add(mp,new Constraint(4,1));        jp.add(new MPanel2(),new Constraint(5,1));        jp.add(new MPanel2(),new Constraint(6,1));                                add(jp);            }}class MPanel2 extends JPanel {    MPanel2(){        /*Dimension d = new Dimension(100,100);        //this.setPreferredSize(new Dimension(60,60));        this.setMaximumSize(d);        this.setMinimumSize(d);*/        add(new JLabel("面板"));                this.setBorder(BorderFactory.createEtchedBorder());    }}class Constraint extends GridBagConstraints {    Constraint(int gridx,int gridy) {                this.gridx = gridx;  //gridx,gridy 指表格坐标.指此物件的开始位置在(x,y)处,也即在 x列,y行处 ,x,y 都从0开始.        this.gridy = gridy;        this.setFill(Constraint.BOTH); //默认物作是居中的.设成both后如果物件比所占area小就会在横竖两个方向拉伸        //this.setWeight(100, 100);//空白区域怎么分配.        this.setInsets(1);//边界    }    Constraint(int gridx,int gridy,int gridheight,int gridwidth) {        this(gridx,gridy);    //高和宽指物件占用的空间 , 四个参数可理解 了 ,x,y,dy,dx        this.gridheight = gridheight;        this.gridwidth = gridwidth;    }    public Constraint setFill(int fill) {        this.fill = fill;        return this;    }    public Constraint setAnchor(int anchor) {        this.anchor = anchor; //是指物件放在所在区域的什么位置,默认是center CENTER, NORTH, NORTHEAST, EAST, SOUTHEAST, SOUTH, SOUTHWEST, WEST,         //and NORTHWEST. The relative values are: PAGE_START, PAGE_END, LINE_START, LINE_END, FIRST_LINE_START, FIRST_LINE_END, LAST_LINE_START and LAST_LINE_END. The default value is CENTER        return this;    }    public Constraint setWeight(double weightx,double weighty) {        this.weightx = weightx;        this.weighty = weighty;        return this;    }    public Constraint setInsets(int distance){        this.insets = new Insets(distance,distance,distance,distance);        return this;    }}

TAG: