package wanggezubujuguanliqi; import java.awt.Button; import java.awt.Color; import java.awt.Container; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class Demo { JFrame frame=new JFrame();//主窗体 Container container;//主容器 void createFrame() { container=frame.getContentPane(); container.setLayout(new GridBagLayout());//获取主容器并设置布局方式 frame.setSize(800,600);//设置窗体大小 frame.setLocationRelativeTo(null);//设置居中方式 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭规则 } void init() { GridBagConstraints g1BagConstraints=new GridBagConstraints();//创建约束条件 g1BagConstraints.gridx=0; g1BagConstraints.gridy=0; container.add(new JButton("组件1"),g1BagConstraints); GridBagConstraints g2BagConstraints=new GridBagConstraints();//创建约束条件 g2BagConstraints.gridx=1; g2BagConstraints.gridy=1; container.add(new JButton("组件2"),g2BagConstraints); GridBagConstraints g3BagConstraints=new GridBagConstraints();//创建约束条件 g3BagConstraints.gridx=3; g3BagConstraints.gridy=3; container.add(new JButton("组件3"),g3BagConstraints); } void createButton() { for (int i = 0; i < 9; i++) { GridBagConstraints g1BagConstraints=new GridBagConstraints();//创建约束条件 g1BagConstraints.gridx=i; g1BagConstraints.gridy=0; container.add(new JButton("组件"),g1BagConstraints); GridBagConstraints g2BagConstraints=new GridBagConstraints();//创建约束条件 g2BagConstraints.gridx=0; g2BagConstraints.gridy=i; container.add(new JButton("组件"),g2BagConstraints); } } void init2() { GridBagConstraints g1BagConstraints=new GridBagConstraints();//创建约束条件 g1BagConstraints.gridx=1; g1BagConstraints.gridy=1; container.add(new JButton("组件1"),g1BagConstraints); GridBagConstraints g2BagConstraints=new GridBagConstraints();//创建约束条件 g2BagConstraints.gridx=2; g2BagConstraints.gridy=2; g2BagConstraints.gridwidth=2; g2BagConstraints.gridheight=1; container.add(new JButton("组件2"),g2BagConstraints); GridBagConstraints g3BagConstraints=new GridBagConstraints();//创建约束条件 g3BagConstraints.gridx=4; g3BagConstraints.gridy=4; g3BagConstraints.gridwidth=2; g3BagConstraints.gridheight=2; container.add(new JButton("组件3"),g3BagConstraints); } void init3(){ GridBagConstraints g1BagConstraints=new GridBagConstraints();//创建约束条件 g1BagConstraints.gridx=1; g1BagConstraints.gridy=1; g1BagConstraints.gridwidth=2; g1BagConstraints.gridheight=2; container.add(new JButton("NONE"),g1BagConstraints); GridBagConstraints g2BagConstraints=new GridBagConstraints();//创建约束条件 g2BagConstraints.gridx=3; g2BagConstraints.gridy=1; g2BagConstraints.gridwidth=2; g2BagConstraints.gridheight=1; g2BagConstraints.fill=GridBagConstraints.HORIZONTAL;//水平填充 container.add(new JButton("HORIZONTAL"),g2BagConstraints); GridBagConstraints g3BagConstraints=new GridBagConstraints();//创建约束条件 g3BagConstraints.gridx=5; g3BagConstraints.gridy=1; g3BagConstraints.gridwidth=2; g3BagConstraints.gridheight=2; g3BagConstraints.fill=GridBagConstraints.VERTICAL;//垂直填充 container.add(new JButton("VERTICAL"),g3BagConstraints); GridBagConstraints g4BagConstraints=new GridBagConstraints();//创建约束条件 g4BagConstraints.gridx=7; g4BagConstraints.gridy=1; g4BagConstraints.gridwidth=2; g4BagConstraints.gridheight=2; g4BagConstraints.fill=GridBagConstraints.BOTH;//全填充 container.add(new JButton("BOTH"),g4BagConstraints); } void init4() {//anchor属性可以定义组件在单元格中的方位 GridBagConstraints g1BagConstraints=new GridBagConstraints();//创建约束条件 g1BagConstraints.gridx=1; g1BagConstraints.gridy=1; g1BagConstraints.gridwidth=2; g1BagConstraints.gridheight=2; g1BagConstraints.anchor=GridBagConstraints.NORTH; container.add(new JButton("@"),g1BagConstraints); g1BagConstraints.fill=GridBagConstraints.BOTH;//全填充 g1BagConstraints.anchor=g1BagConstraints.CENTER;//居中显示 JPanel panel=new JPanel();//创建面板 panel.setBackground(Color.green);//面板背景绿色 container.add(panel,g1BagConstraints); } void init5() { GridBagConstraints g1BagConstraints=new GridBagConstraints();//创建约束条件 g1BagConstraints.gridx=1; g1BagConstraints.gridy=1; g1BagConstraints.gridwidth=2; g1BagConstraints.gridheight=2; g1BagConstraints.insets=new Insets(5, 5, 5, 5); container.add(new JButton("@"),g1BagConstraints); } void init6() {//ipadx和ipady是组建的首选大小,当他们的值是正数时放大,为负数时缩小 GridBagConstraints g1BagConstraints=new GridBagConstraints();//创建约束条件 g1BagConstraints.gridx=4; g1BagConstraints.gridy=2; g1BagConstraints.ipadx=10; g1BagConstraints.ipady=10; container.add(new JButton("组件1"),g1BagConstraints); GridBagConstraints g2BagConstraints=new GridBagConstraints();//创建约束条件 g2BagConstraints.gridx=2; g2BagConstraints.gridy=2; g2BagConstraints.ipadx=-10; g2BagConstraints.ipady=-10; container.add(new JButton("组件2"),g2BagConstraints); } void init7() {//表示单元格的最大宽和高 GridBagConstraints g1BagConstraints=new GridBagConstraints();//创建约束条件 g1BagConstraints.gridx=2; g1BagConstraints.gridy=2; g1BagConstraints.weightx=10; g1BagConstraints.weighty=10; container.add(new JButton("组件1"),g1BagConstraints); } public static void main(String[] args) {//可以定义组件到四个边的距离 Demo demo=new Demo();//创建Demo对象 demo.createFrame();//创建窗体 demo.createButton(); demo.init7(); demo.frame.setVisible(true);//窗体是否显示出来 } }
原文:https://www.cnblogs.com/mlzhang/p/14823571.html