java中Swing五種常見的布局方式


1、邊界布局(BorderLayout)

2、流式布局(FlowLayout)

3、網格布局(GridLayout)

4、盒子布局(BoxLaYout)

5、空布局(null)

還有其他兩種布局,分別是GridBagLayout(網格包布局)、CardLayout(卡片布局)

注意:JFrame和JDialog默認布局為BorderLayout,JPanel和Applet默認布局為FlowLayout

邊界布局示例代碼:

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
import java.awt.BorderLayout;
 
import javax.swing.JButton;
import javax.swing.JFrame;
 
public class BorderLayoutExample extends JFrame{
   JButton btn1= new JButton( "東" );
   JButton btn2= new JButton( "南" );
   JButton btn3= new JButton( "西" );
   JButton btn4= new JButton( "北" );
   JButton btn5= new JButton( "中" );
   BorderLayoutExample(){
     init();
     this .setTitle( "邊界布局" );
     this .setResizable( true );
     this .setSize( 200 , 200 );
     this .setLocationRelativeTo( null );
     this .setDefaultCloseOperation(EXIT_ON_CLOSE);
     this .setVisible( true );
   }
   void init(){
     this .setLayout( new BorderLayout( 10 , 5 )); //默認為0,0;水平間距10,垂直間距5
     this .add(btn1,BorderLayout.EAST);
     this .add(btn2,BorderLayout.SOUTH);
     this .add(btn3,BorderLayout.WEST);
     this .add(btn4,BorderLayout.NORTH);
     this .add(btn5,BorderLayout.CENTER);
   }
   public static void main(String args[]){
     new BorderLayoutExample();
   }
}

運行結果:

流式布局示例代碼:

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
import java.awt.FlowLayout;
 
import javax.swing.JButton;
import javax.swing.JFrame;
 
public class FlowLayoutExample extends JFrame{
   JButton btn1= new JButton( "one" );
   JButton btn2= new JButton( "two" );
   JButton btn3= new JButton( "three" );
   JButton btn4= new JButton( "four" );
   JButton btn5= new JButton( "five" );
   FlowLayoutExample(){
     init();
     this .setTitle( "流式布局" );
     this .setResizable( true );
     this .setSize( 200 , 200 );
     this .setLocationRelativeTo( null );
     this .setDefaultCloseOperation(EXIT_ON_CLOSE);
     this .setVisible( true );
   }
   void init(){
     this .setLayout( new FlowLayout(FlowLayout.LEFT, 10 , 5 )); //默認為居中;水平間距10,垂直間距5
     this .add(btn1);
     this .add(btn2);
     this .add(btn3);
     this .add(btn4);
     this .add(btn5);
   }
   public static void main(String args[]){
     new FlowLayoutExample();
   }
}

運行結果:

網格布局示例代碼:

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
import java.awt.GridLayout;
 
import javax.swing.JButton;
import javax.swing.JFrame;
 
public class GridLayoutExample extends JFrame{
     JButton btn1= new JButton( "one" );
     JButton btn2= new JButton( "two" );
     JButton btn3= new JButton( "three" );
     JButton btn4= new JButton( "four" );
     JButton btn5= new JButton( "five" );
     GridLayoutExample(){
         init();
         this .setTitle( "表格布局" );
         this .setResizable( true );
         this .setSize( 300 , 200 );
         this .setLocationRelativeTo( null );
         this .setDefaultCloseOperation(EXIT_ON_CLOSE);
         this .setVisible( true );
     }
     void init(){
         this .setLayout( new GridLayout( 2 , 3 , 10 , 5 )); //默認為1行,n列;2行3列,水平間距10,垂直間距5
         this .add(btn1);
         this .add(btn2);
         this .add(btn3);
         this .add(btn4);
         this .add(btn5);
     }
     public static void main(String args[]){
         new GridLayoutExample();
     }
}

運行結果:

盒子布局示例代碼:

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
34
35
36
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
 
public class BoxLaYoutExample extends JFrame{
     JButton btn1= new JButton( "one" );
     JButton btn2= new JButton( "two" );
     JButton btn3= new JButton( "three" );
     JButton btn4= new JButton( "four" );
     JButton btn5= new JButton( "five" );
     BoxLaYoutExample(){
         init();
         this .setTitle( "表格布局" );
         this .setResizable( true );
         this .setSize( 300 , 200 );
         this .setLocationRelativeTo( null );
         this .setDefaultCloseOperation(EXIT_ON_CLOSE);
         this .setVisible( true );
     }
     void init(){
         this .setLayout( new BoxLayout( this .getContentPane(),BoxLayout.X_AXIS));
         //可以使用Box容器代替
         //Box box = new Box(BoxLayout.Y_AXIS);box.add(btn...);box.add(creat..);
         this .add(btn1);
         this .add(btn2);
         this .getContentPane().add(Box.createHorizontalStrut( 10 )); //采用x布局時,添加固定寬度組件隔開
         //this.getContentPane().add(Box.createVerticalStrut(5)); //采用y布局時,添加固定高度組件隔開
         this .add(btn3);
         this .add(btn4);
         this .add(btn5);
     }
     public static void main(String args[]){
         new BoxLaYoutExample();
     }
}

運行結果:

空布局示例代碼:

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
34
35
36
import javax.swing.JButton;
import javax.swing.JFrame;
 
public class NullLayoutExample extends JFrame{
     JButton btn1= new JButton( "one" );
     JButton btn2= new JButton( "two" );
     JButton btn3= new JButton( "three" );
     JButton btn4= new JButton( "four" );
     JButton btn5= new JButton( "five" );
     NullLayoutExample(){
         init();
         this .setTitle( "空布局" );
         this .setResizable( true );
         this .setSize( 300 , 300 );
         this .setLocationRelativeTo( null );
         this .setDefaultCloseOperation(EXIT_ON_CLOSE);
         this .setVisible( true );
     }
     void init(){
         this .setLayout( null );
         btn1.setBounds( 10 , 0 , 100 , 50 ); //x坐標10,y坐標0,組件寬100,高50
         btn2.setBounds( 20 , 50 , 100 , 50 );
         btn3.setBounds( 30 , 100 , 100 , 50 );
         btn4.setBounds( 40 , 150 , 100 , 50 );
         btn5.setBounds( 50 , 200 , 100 , 50 );
         this .add(btn1);
         this .add(btn2);
         this .add(btn3);
         this .add(btn4);
         this .add(btn5);
         
     }
     public static void main(String args[]){
         new NullLayoutExample();
     }
}

運行結果:

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM