面板的默认布局管理器是 java.awt 包中的 FlowLayout 类。使用 FlowLayout 时,像在页面中排列英文单词那样排组件:从左到右排列,当前行没有空间后进入下一行。
View Code
- 1 import java.awt. * ;
- 2 import javax.swing. * ;
- 3 4 public class Crisis extends JFrame {
- 5 JButton panicButton;
- 6 JButton dontPanicButton;
- 7 JButton blameButton;
- 8 JButton mediaButton;
- 9 JButton saveButton;
- 10 11 public Crisis() {
- 12 super("Crisis");
- 13 setLookAndFeel();
- 14 setSize(348, 128);
- 15 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- 16 // 1.默认布局
- 17 FlowLayout flo = new FlowLayout();
- 18 setLayout(flo);
- 19 panicButton = new JButton("Panic");
- 20 dontPanicButton = new JButton("Don't Panic");
- 21 blameButton = new JButton("Blame Others");
- 22 mediaButton = new JButton("Notify the Media");
- 23 saveButton = new JButton("save yourself");
- 24 add(panicButton);
- 25 add(dontPanicButton);
- 26 add(blameButton);
- 27 add(mediaButton);
- 28 add(saveButton);
- 29 setVisible(true);
- 30
- }
- 31 32 private void setLookAndFeel() {
- 33
- try {
- 34 UIManager.setLookAndFeel(35 "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
- 36
- } catch(Exception exc) {
- 37 // ignore error
- 38
- }
- 39
- }
- 40 41 public static void main(String[] arguments) {
- 42 Crisis frame = new Crisis();
- 43
- }
- 44
- }
GridLayout 类位于 java.awt 包中,它将容器中所有的组件组织为指定的行数和列数。分配给每个组件的显示区域都相同。
当组件加入到容器中时,GridLayout 将所有的组件放置到网格中的某个位置,而且组件是从左到右依次添加,当这一行满了之后,在从下一行的最左边开始添加。
View Code
- 1 import java.awt. * ;
- 2 import javax.swing. * ;
- 3 4 public class Crisis extends JFrame {
- 5 JButton panicButton;
- 6 JButton dontPanicButton;
- 7 JButton blameButton;
- 8 JButton mediaButton;
- 9 JButton saveButton;
- 10 11 public Crisis() {
- 12 super("Crisis");
- 13 setLookAndFeel();
- 14 setSize(348, 128);
- 15 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- 16 17 // 2.GridLayout布局
- 18 GridLayout grid = new GridLayout(2, 3);
- 19 setLayout(grid);
- 20 panicButton = new JButton("Panic");
- 21 dontPanicButton = new JButton("Don't Panic");
- 22 blameButton = new JButton("Blame Others");
- 23 mediaButton = new JButton("Notify the Media");
- 24 saveButton = new JButton("save yourself");
- 25 add(panicButton);
- 26 add(dontPanicButton);
- 27 add(blameButton);
- 28 add(mediaButton);
- 29 add(saveButton);
- 30 setVisible(true);
- 31
- }
- 32 33 private void setLookAndFeel() {
- 34
- try {
- 35 UIManager.setLookAndFeel(36 "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
- 37
- } catch(Exception exc) {
- 38 // ignore error
- 39
- }
- 40
- }
- 41 42 public static void main(String[] arguments) {
- 43 Crisis frame = new Crisis();
- 44
- }
- 45
- }
BorderLayout 类也位于 java.awt 包中,它将容器中的组件放置在特定的位置,该位置有 5 个方位:东、西、南、北、中。
BorderLayout 管理器将组件放置到 5 个位置:其中 4 个位置由罗盘方向指定,另外一个由中心区域指定。当在该布局下添加组件时,add() 方法会包含第 2 个参数,用于指示组件应该放置的位置。该参数应该是 BorderLayout 类的 5 个类变量之一:NORTH、SOUTH、EAST、WEST 和 CENTER。
与 GridLayout 类相同,BorderLayout 也会将所有可用空间都分配给组件。在周围放置 4 个边界组件后,余下的空间都分配给中央的组件,因此它通常是最大的。
View Code
- 1 import java.awt. * ;
- 2 import javax.swing. * ;
- 3 4 public class Crisis extends JFrame {
- 5 JButton panicButton;
- 6 JButton dontPanicButton;
- 7 JButton blameButton;
- 8 JButton mediaButton;
- 9 JButton saveButton;
- 10 11 public Crisis() {
- 12 super("Crisis");
- 13 setLookAndFeel();
- 14 setSize(348, 128);
- 15 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- 16 BorderLayout crisisLayout = new BorderLayout();
- 17 setLayout(crisisLayout);
- 18 19 panicButton = new JButton("Panic");
- 20 dontPanicButton = new JButton("Don't Panic");
- 21 blameButton = new JButton("Blame Others");
- 22 mediaButton = new JButton("Notify the Media");
- 23 saveButton = new JButton("save yourself");
- 24 add(panicButton, BorderLayout.NORTH);
- 25 add(dontPanicButton, BorderLayout.SOUTH);
- 26 add(blameButton, BorderLayout.EAST);
- 27 add(mediaButton, BorderLayout.WEST);
- 28 add(saveButton, BorderLayout.CENTER);
- 29 setVisible(true);
- 30
- }
- 31 32 private void setLookAndFeel() {
- 33
- try {
- 34 UIManager.setLookAndFeel(35 "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
- 36
- } catch(Exception exc) {
- 37 // ignore error
- 38
- }
- 39
- }
- 40 41 public static void main(String[] arguments) {
- 42 Crisis frame = new Crisis();
- 43
- }
- 44
- }
BoxLayout 类位于 javax.swing 包中,它可以将组件排列成一行或一列。
使用该布局时,先创建一个放置组件的面板,然后再创建一个布局管理器,它带有 2 个参数:
1. 以框式布局组织的组件;
2.BoxLayout.Y_AXIS 指定垂直排列,BoxLayout.X_AXIS 指定水平排列;
View Code
- 1 import java.awt. * ;
- 2 import javax.swing. * ;
- 3 4 public class Crisis extends JFrame {
- 5 JButton panicButton;
- 6 JButton dontPanicButton;
- 7 JButton blameButton;
- 8 JButton mediaButton;
- 9 JButton saveButton;
- 10 11 public Crisis() {
- 12 super("Crisis");
- 13 setLookAndFeel();
- 14 setSize(348, 128);
- 15 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- 16 JPanel pane = new JPanel();
- 17 BoxLayout box = new BoxLayout(pane, BoxLayout.Y_AXIS);
- 18 pane.setLayout(box);
- 19 panicButton = new JButton("Panic");
- 20 dontPanicButton = new JButton("Don't Panic");
- 21 blameButton = new JButton("Blame Others");
- 22 mediaButton = new JButton("Notify the Media");
- 23 saveButton = new JButton("save yourself");
- 24 pane.add(panicButton);
- 25 pane.add(dontPanicButton);
- 26 pane.add(blameButton);
- 27 pane.add(mediaButton);
- 28 pane.add(saveButton);
- 29 add(pane);
- 30 31 setVisible(true);
- 32
- }
- 33 34 private void setLookAndFeel() {
- 35
- try {
- 36 UIManager.setLookAndFeel(37 "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
- 38
- } catch(Exception exc) {
- 39 // ignore error
- 40
- }
- 41
- }
- 42 43 public static void main(String[] arguments) {
- 44 Crisis frame = new Crisis();
- 45
- }
- 46
- }
Insets 类位于 java.awt 包中,它有一个接受 4 个参数的构造函数:在容器上、下、左、右留出的空间。每个参数都以像素为单位,像素是定义框架大小时使用的度量单位。
View Code
- 1 public Insets getInsets() {
- 2 Insets squeeze = new Insets(60, 15, 10, 15);
- 3
- return squeeze;
- 4
- }
View Code
- 1 import java.awt.*;
- 2 import javax.swing.*;
- 3
- 4 public class LottoMadness extends JFrame {
- 5 // set up row1
- 6 JPanel row1 = new JPanel();
- 7 ButtonGroup option = new ButtonGroup();
- 8 JCheckBox quickpick = new JCheckBox("Quick Pick", false);
- 9 JCheckBox personal = new JCheckBox("Personal", true);
- 10 // set up row2
- 11 JPanel row2 = new JPanel();
- 12 JLabel numbersLabel = new JLabel("Your picks: ", JLabel.RIGHT);
- 13 JTextField[] numbers = new JTextField[6];
- 14 JLabel winnersLabel = new JLabel("Winners: ", JLabel.RIGHT);
- 15 JTextField[] winners = new JTextField[6];
- 16 // set up row3
- 17 JPanel row3 = new JPanel();
- 18 JButton stop = new JButton("Stop");
- 19 JButton play = new JButton("play");
- 20 JButton reset = new JButton("Reset");
- 21 // set up row4
- 22 JPanel row4 = new JPanel();
- 23 JLabel got3Label = new JLabel("3 of 6: ", JLabel.RIGHT);
- 24 JTextField got3 = new JTextField("0");
- 25 JLabel got4Label = new JLabel("4 of 6: ", JLabel.RIGHT);
- 26 JTextField got4 = new JTextField("0");
- 27 JLabel got5Label = new JLabel("5 of 6: ", JLabel.RIGHT);
- 28 JTextField got5 = new JTextField("0");
- 29 JLabel got6Label = new JLabel("6 of 6: ", JLabel.RIGHT);
- 30 JTextField got6 = new JTextField("0");
- 31 JLabel drawingsLabel = new JLabel("Drawings", JLabel.RIGHT);
- 32 JTextField drawings = new JTextField("0");
- 33 JLabel yearsLabel = new JLabel("Years: ", JLabel.RIGHT);
- 34 JTextField years = new JTextField();
- 35
- 36 public LottoMadness() {
- 37 super("Lotto Madness");
- 38
- 39 setSize(550, 400);
- 40 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- 41 GridLayout layout = new GridLayout(5, 1, 10, 10);
- 42 setLayout(layout);
- 43
- 44 FlowLayout layout1 = new FlowLayout(FlowLayout.CENTER, 10, 10);
- 45 option.add(quickpick);
- 46 option.add(personal);
- 47 row1.setLayout(layout1);
- 48 row1.add(quickpick);
- 49 row1.add(personal);
- 50 add(row1);
- 51
- 52 GridLayout layout2 = new GridLayout(2, 7, 10, 10);
- 53 row2.setLayout(layout2);
- 54 row2.add(numbersLabel);
- 55 for (int i = 0; i < 6; i++) {
- 56 numbers[i] = new JTextField();
- 57 row2.add(numbers[i]);
- 58 }
- 59 row2.add(winnersLabel);
- 60 for (int i = 0; i < 6; i++) {
- 61 winners[i] = new JTextField();
- 62 winners[i].setEditable(false);
- 63 row2.add(winners[i]);
- 64 }
- 65 add(row2);
- 66
- 67 FlowLayout layout3 = new FlowLayout(FlowLayout.CENTER, 10, 10);
- 68 row3.setLayout(layout3);
- 69 stop.setEnabled(false);
- 70 row3.add(stop);
- 71 row3.add(play);
- 72 row3.add(reset);
- 73 add(row3);
- 74
- 75 GridLayout layout4 = new GridLayout(2, 3, 20, 10);
- 76 row4.setLayout(layout4);
- 77 row4.add(got3Label);
- 78 got3.setEditable(false);
- 79 row4.add(got3);
- 80 row4.add(got4Label);
- 81 got4.setEditable(false);
- 82 row4.add(got4);
- 83 row4.add(got5Label);
- 84 got5.setEditable(false);
- 85 row4.add(got5);
- 86 row4.add(got6Label);
- 87 got6.setEditable(false);
- 88 row4.add(got6);
- 89 row4.add(drawingsLabel);
- 90 drawings.setEditable(false);
- 91 row4.add(drawings);
- 92 row4.add(yearsLabel);
- 93 years.setEditable(false);
- 94 row4.add(years);
- 95 add(row4);
- 96
- 97 setVisible(true);
- 98 }
- 99
- 100 private static void setLookAndFeel() {
- 101 try {
- 102 UIManager.setLookAndFeel(
- 103 "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
- 104 } catch (Exception exc) {
- 105 // ignore error
- 106 }
- 107 }
- 108
- 109 public static void main(String[] arguments) {
- 110 LottoMadness.setLookAndFeel();
- 111 LottoMadness frame = new LottoMadness();
- 112 }
- 113 }
来源: http://www.cnblogs.com/dulixiaoqiao/p/6487272.html