java几种布局的方式_【转】java中Swing五种常见的布局方式

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

}

}

运行结果:

969faabae3b2b5222ba4bd244ff78bb3d0f.jpg

流式布局示例代码:

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

}

}

运行结果:

c4a89f1577abb2e97f6a144e6ff20d71073.jpg

网格布局示例代码:

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

}

}

运行结果:

bc059fc6bc13f7ab77d9dba61f49a955daa.jpg

盒子布局示例代码:

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

}

}

运行结果:

ea252ebdb11e99b99fa809c2104d8accac5.jpg

空布局示例代码:

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

}

}

运行结果:

9ccf1e3aca9ace0f7c4c6b696b1d8de1258.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值