GUI布局
边界布局
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
package guiTest; //JFrame默认的是边界布局BorderLayout import java.awt.BorderLayout; import javax.swing.JButton; import javax.swing.JFrame; public class BorderLayoutDemo { public static void main(String[] args) { JFrame f = new JFrame( "边界布局BorderLayout" ); //JFrame的默认LayoutManager为BorderLayout // f.setLayout(new BorderLayout());//可以不写,默认的就是流式布局 JButton btn = new JButton( "北" ); f.add(btn,BorderLayout.NORTH); btn= new JButton( "南" ); f.add(btn,BorderLayout.SOUTH); btn= new JButton( "东" ); f.add(btn,BorderLayout.EAST); btn= new JButton( "西" ); f.add(btn,BorderLayout.WEST); btn= new JButton( "中" ); f.add(btn,BorderLayout.CENTER); f.pack(); //也可以用f.setSize(222,222);来进行设置 f.setVisible( true ); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } |
流式布局
1
2
3
4
5
6
78
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
package guiTest; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class CardLayoutDemo { private static JPanel p; public static void main(String[] args) { JFrame f = new JFrame( "卡片布局CardLayout" ); p= new JPanel(); //设置p的布局管理器为卡片布局CardLayout p.setLayout( new CardLayout()); //新建两个JPanel JPanel p1 = new JPanel(); JPanel p2 = new JPanel(); JLabel lb = new JLabel( "第一个面板" ); p1.add(lb); //面板里面加标签 lb= new JLabel( "第二个面板" ); p2.add(lb); //面板里面加标签 //将新建的两个JPanel面板添加到p中 p.add(p1, "first" ); p.add(p2, "second" ); //设置默认显示first所对应的JPanel p1 ((CardLayout)p.getLayout()).show(p, "first" ); JButton btn = new JButton( "改变面板" ); btn.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub //当点击'改变面板'时,显示second对应的JPanel p2 ((CardLayout)p.getLayout()).show(p, "second" ); } }); f.add(btn,BorderLayout.NORTH); f.add(p,BorderLayout.CENTER); f.setSize( 400 , 150 ); //f.pack(); f.setVisible( true ); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } |
网格布局
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
package guiTest; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; public class FlowLayoutDemo { public static void main(String[] args) { // TODO Auto-generated method stub JFrame f = new JFrame( "流式布局FlowLayout" ); f.setLayout( new FlowLayout()); for ( int i= 0 ;i< 7 ;i++) { JButton btn= new JButton( "Button" +i); f.add(btn); } f.setSize( 300 , 250 ); //f.pack();默认边框设置宽度和长度刚刚好的样子 f.setVisible( true ); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } |
卡片布局
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
package guiTest; import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; public class GirdLayoutDemo { public static void main(String[] args) { JFrame f = new JFrame( "网格布局GirdLayout" ); //设置f的布局管理器为3行3列的GirdLayout组件间水平与垂直间距为5 f.setLayout( new GridLayout( 3 , 3 , 5 , 5 )); for ( int i= 1 ;i< 10 ;++i) { JButton btn = new JButton(String.valueOf(i)); f.add(btn); } f.pack(); f.setVisible( true ); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } |