• 非规则的矩阵

      1. public static void main(String[] args) {
      2. Frame f = new Frame("GridBagLayout");
      3. f.setVisible(true);
      4. GridBagLayout layout=new GridBagLayout();
      5. f.setLayout(layout);
      6. GridBagConstraints c=new GridBagConstraints();
      7. //设置横向坐标可以拉伸
      8. c.fill=GridBagConstraints.BOTH;
      9. //设置横向,纵向权值为1
      10. c.weightx=1;
      11. c.weighty=0;
      12. Button btn1 = new Button("btn1");
      13. Button btn2 = new Button("btn2");
      14. Button btn3 = new Button("btn3");
      15. Button btn4 = new Button("btn4");
      16. Button btn5 = new Button("btn5");
      17. layout.setConstraints(btn1,c);
      18. layout.setConstraints(btn2,c);
      19. layout.setConstraints(btn3,c);
      20. layout.setConstraints(btn4,c);
      21. //本行最后一个组件
      22. c.gridwidth=GridBagConstraints.REMAINDER;
      23. layout.setConstraints(btn5,c);
      24. f.add(btn1);
      25. f.add(btn2);
      26. f.add(btn3);
      27. f.add(btn4);
      28. f.add(btn5);
      29. //设置横向,纵向权值为0
      30. c.weightx=0;
      31. c.weighty=0;
      32. Button btn6 = new Button("btn6");
      33. layout.setConstraints(btn6,c);
      34. f.add(btn6);
      35. //设置组件横向占2个网格
      36. c.gridwidth=2;
      37. Button btn7 = new Button("btn7");
      38. layout.setConstraints(btn7,c);
      39. f.add(btn7);
      40. //本行最后一个组件
      41. c.gridwidth=GridBagConstraints.REMAINDER;
      42. Button btn8 = new Button("btn8");
      43. layout.setConstraints(btn8,c);
      44. f.add(btn8);
      45. //设置组件纵向跨两个网格,横向跨一个网格
      46. c.gridheight=2;
      47. c.gridwidth=1;
      48. //设置横向,纵向权重为2
      49. c.weightx=2;
      50. c.weighty=2;
      51. Button btn9 = new Button("btn9");
      52. layout.setConstraints(btn9,c);
      53. f.add(btn9);
      54. c.gridwidth=GridBagConstraints.REMAINDER;
      55. c.gridheight=1;
      56. Button btn10 = new Button("btn10");
      57. Button btn11 = new Button("btn11");
      58. layout.setConstraints(btn10,c);
      59. layout.setConstraints(btn11,c);
      60. f.add(btn10);
      61. f.add(btn11);
      62. //设置frame最佳大小并可见
      63. f.pack();
      64. }

      image.png