Swing布局管理器

Swing中使用的所有布局管理器都可以实现LayoutManager接口。Swing中有五种常见的布局管理器分别为FlowLayoutBorderLayoutGridLayoutCardLayout、绝对定位。使用方法及常量可以查找JDK文档。

一:FlowLayout属于流式布局管理器,使用此种布局方式会使所有的组件想流水一样依次进行排序。

<span style="font-size:14px;">package org.cjl.demo18.layoutdemo;

import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

public class FlowLayoutDemo01 {
     public static void main(String[] args){
    	 JFrame frame = new JFrame("welcome to mldn");
    	 //设置窗体中的布局管理器为FlowLayout,所有组件居中对齐,水平和垂直距离为3.
    	 frame.setLayout(new FlowLayout(FlowLayout.CENTER,3,3));
    	 JButton but = null;
    	 for(int i=0;i<9;i++){
    		 but = new JButton("按钮  - "+i);
    		 frame.add(but);//加入按钮
    		 
    	 }
    	 frame.setSize(280,130);
    	 frame.setVisible(true);
     }
}
</span>
显示的结果是


所有的组件按照顺序依次向下排列,每个组件之间的顺序是3.

二:BorderLayout是将一个窗体的版面划分为东、西、南、北、中区域,可以直接将需要的组件放到这区域中。

<span style="font-size:14px;">package org.cjl.demo18.layoutdemo;

import java.awt.BorderLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

public class BorderLayoutDemo01 {
   public static void main(String[] args){
	   JFrame frame = new JFrame("Welocme to mldn");
	   //设置窗体中的布局管理器为BorderLayout,所有的组件水平和垂直间距为3
	  frame.setLayout(new BorderLayout(3,3));
	  frame.add(new JButton("东(EAST)"),BorderLayout.EAST);
	  frame.add(new JButton("西(WEST)"),BorderLayout.WEST);
	  frame.add(new JButton("南(SOUTH)"),BorderLayout.SOUTH);
	  frame.add(new JButton("北(NORTH)"),BorderLayout.NORTH);
	  frame.add(new JButton("中(CENTER)"),BorderLayout.CENTER);
	  
	  frame.pack();    //自动调整窗体大小
	  frame.setVisible(true);
   }
}
</span>


三:GridLayout:是以表格的形式进行管理的,在使用此布局管理器时必须设置显示的行数

package org.cjl.demo18.layoutdemo;

import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

public class GridLayoutDemo01 {
      public static void main(String[] args){
    	  JFrame frame = new JFrame("welcome to mldn");
    	  //设置窗体中的布局管理为GridLayout,按3X5进行排列,水平和垂直间距为3.
    	  frame.setLayout(new GridLayout(3,5,3,3));
    	  JButton but = null;
    	  for(int i=0;i<13;i++){
    		  but = new JButton("按钮 - "+i);
    		  frame.add(but);
    	  }
    	  frame.pack();//根据组件自动调整窗体大小
    	  frame.setVisible(true);
      }
}
显示结果


四:CardLayout:是将一组组件彼此重,像卡片一样。

package org.cjl.demo18.layoutdemo;


import java.awt.CardLayout;
import java.awt.Container;


import javax.swing.JFrame;
import javax.swing.JLabel;


public class CardLayoutDemo01 {
     public static void main(String[] args){
    	 JFrame frame = new JFrame("welcome to mldn");
    	 Container cont = frame.getContentPane();//取得 窗体容器
    	 CardLayout card = new CardLayout();
    	 frame.setLayout(card);//设置布局管理器
    	 cont.add(new JLabel("标签-A",JLabel.CENTER),"first");
    	 cont.add(new JLabel("标签-B",JLabel.CENTER),"second");
    	 cont.add(new JLabel("标签-C",JLabel.CENTER),"third");
    	 cont.add(new JLabel("标签-D",JLabel.CENTER),"fourth");
    	 cont.add(new JLabel("标签-E",JLabel.CENTER),"fifth");
    	 frame.pack();//自动调整窗体大小
    	 
    	 frame.setVisible(true);
    	 card.show(cont, "fourth");
    	 for(int i=0;i<5;i++){
    		 try{
    			 Thread.sleep(3000); //加入显示延迟
    		 }catch(InterruptedException e){
    			 e.printStackTrace();
    		 }
    		 card.next(cont);//从容器中取出组件
    		 
    	 }
     }
}



原文地址:https://www.cnblogs.com/Rollins/p/4524895.html