欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java中Swing五种常见的布局方式

程序员文章站 2022-03-10 10:53:49
1、 边界布局(borderlayout) 2、流式布局(flowlayout) 3、网格布局(gridlayout) 4、盒子布局(boxlayout) 5、空布...

1、 边界布局(borderlayout)

2、流式布局(flowlayout)

3、网格布局(gridlayout)

4、盒子布局(boxlayout)

5、空布局(null)

还有其他两种布局,分别是gridbaglayout(网格包布局)、cardlayout(卡片布局)

注意:jframe和jdialog默认布局为borderlayout,jpanel和applet默认布局为flowlayout

边界布局示例代码:

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();
  }
}

运行结果:

java中Swing五种常见的布局方式

流式布局示例代码:

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();
  }
}

运行结果:

java中Swing五种常见的布局方式

网格布局示例代码:

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();
	}
}

运行结果:

java中Swing五种常见的布局方式

盒子布局示例代码:

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();
	}
}

运行结果:

java中Swing五种常见的布局方式

空布局示例代码:

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();
	}
}

运行结果:

java中Swing五种常见的布局方式