而anchor参数则是当一个组件大于分配给它的单元格时发挥作用,该约束就是约定如何处理该组件,它的值如下所示:
- GridBagConstraints.CENTER:居中缩小。
- GridBagConstraints.NORTH:顶部缩小。
- GridBagConstraints.NORTHEAST:左上角缩小。
- GridBagConstraints.EAST:右侧缩小。
GridBagLayout布局管理器的构造器只有一种,就是不带参数的构造器。下面通过代码认识下该布局管理器。
import javax.swing.*; import java.awt.*; /** * GridBagLayout * Created by veione on 5/9/16. */ public class GridBagLayoutCase extends JPanel{ private static final int WIDTH=300; private static final int HEIGHT=200; JFrame loginFrame; public void add(Component c,GridBagConstraints constraints,int x,int y,int w,int h){ constraints.gridx=x; constraints.gridy=y; constraints.gridwidth=w; constraints.gridheight=h; add(c,constraints); } public GridBagLayoutCase(){ //设置顶层容器 loginFrame=new JFrame("信息管理系统"); loginFrame.setDefaultCloseOperation(Tools.EXIT_ON_CLOSE); //创建网格组布局方式对象 GridBagLayout layout=new GridBagLayout(); setLayout(layout); loginFrame.add(this,BorderLayout.WEST); loginFrame.setSize(WIDTH,HEIGHT); Tools.centerWindow(loginFrame); JButton btnOk=new JButton("确认"); JButton btnCancel=new JButton("取消"); JLabel lblTitle=new JLabel("用户登录"); JLabel lblName=new JLabel("用户名"); JLabel lblPwd=new JLabel("密码"); JTextField txtName=new JTextField(15); JPasswordField txtPwd=new JPasswordField(15); //创建约束对象 GridBagConstraints constraints=new GridBagConstraints(); constraints.fill=GridBagConstraints.NONE; constraints.anchor=GridBagConstraints.EAST; constraints.weightx=3; constraints.weighty=4; add(lblTitle,constraints,0,0,3,1); add(lblName,constraints,0,1,1,1); add(lblPwd,constraints,0,2,1,1); add(txtName,constraints,2,1,1,1); add(txtPwd,constraints,2,2,1,1); add(btnOk,constraints,0,3,1,1); add(btnCancel,constraints,2,3,1,1); loginFrame.setResizable(false); loginFrame.setVisible(true); } public static void main(String[] args) { new GridBagLayoutCase(); } }以上代码运行结果如下:
CardLayout布局管理器非常简单,它将容器中的每一个组件当作一个卡片,一次仅有一个卡片可见,如最初显示容器时,CardLayout对象的第一个组件可见,其它组件都是不可见的。下面将以表格形式给出CardLayout布局管理器的构造器。
CardLayout布局管理器的构造器说明CardLayout() 构造一个间距大小为0的新卡片布局
CardLayout(int h,int v) 构造一个卡片布局管理器,其中h和v分别为卡片间水平和垂直方向上的空白空间
在这个布局管理器中还有一些常用方法,说明如下:
GridLayout布局管理器常用方法说明public void first(Container parent) 移到指定容器的第一个卡片
public void next(Container parent) 移到指定容器的下一个卡片
public void previous(Container parent) 移到指定容器的前一个卡片
public void last(Container parent) 移到指定容器的最后一个卡片
public void show(Container parent,String name) 显示指定卡片