• java界面编程(3) ------ 控制布局


    本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020

       在java 中,组件放置在窗口上的方式可能与其它的GUI系统都不同样。首先,它全然基于代码。没实用来控制组件布置的“资源”。第二。组件旋转在窗口上的方式不是通过绝对坐标控制。而是由“布局管理器”依据组件增加的顺序决定位置。

    使用不同的布局管理器。组件的大小,形状和位置将大不同样,此外,布局管理器还可以适应applet或应用程序窗口的大小,所以假设窗口的尺寸改变了。组件的大小。形状和位置也可以做出对应的改变。

       JApplet,JFrame, JDialog. JPanel等都能够包括和显示组件。Container中有一个称为setLayout()的方法,能够通过这种方法来选择不同的而已管理器。本节就来演示各个不同的布局管理器的效果。

    布局管理器:

    1. BorderLayout

       JFrame使用BorderLayout作为默认的布局模式。它将接受add()方法将增加的组件放在中央。然后将组件向各个方向拉伸,直到与边框对齐。

       BorderLayout具有四个边框区域和一个中央区域的概念。当向BorderLayout管理的面板增加组件时。能够使用重载的add()方法。它的第一个參数接受一个常量值,能够是下面不论什么一个:

    常量 解释
    BorderLayout.NORTH 顶端
    BorderLayout.SOUTH 底端
    BorderLayout.EAST 右端
    BorderLayout.WEST 左端
    BorderLayout.CENTER 从中央可始填充。直到与其它组件功边框相遇

      假设没有指定放置的位置,则默认是放置在中央。

    以下的代码就直接演示了上述表格的5个位置:

    public class SwingTest extends JFrame{
    	public SwingTest() {
    		super("Hello Swing");
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setSize(300, 200);
    		setVisible(true);
        	
            add(BorderLayout.NORTH,new JButton("North"));
    		add(BorderLayout.SOUTH,new JButton("South"));
    		add(BorderLayout.EAST,new JButton("EAST"));
    		add(BorderLayout.WEST,new JButton("WEST"));
    		add(BorderLayout.CENTER,new JButton("Center"));
        }
    	public static void main(String[] args) throws InterruptedException {
    		
    		SwingUtilities.invokeLater(new Runnable() {
    			
    			@Override
    			public void run() {
    				// TODO Auto-generated method stub
    				new SwingTest();
    			}
    		});
    }
      效果例如以下:


    2.FlowLayout

      FlowLayout布局直接将组件从左到右“流动”到窗口上,直到占满上方的空间,然后向下移动一行,继续流动。

    在使用FlowLayout布局的情况下,组件将呈现“合适”的大小。如,JButton的大小就是其标签的大小。

      主要代码例如以下:

         //FlowLayout布局 
    	setLayout(new FlowLayout());
    	for(int i = 0;i < 20;i++){
    		add(new JButton("Button "+i));
    	}
      效果:

     这时,你能够拖动窗口缩放窗口,里面的组件也会随着窗口的变化而变化。


    3. GridLayout

      GridLayout同意构建一个旋转组件的表格。在向表格里面加入组件的时候。它们将依照从左到右。从上到小的顺序加入。在构造器中要指定须要的行数和列数。它们将均匀分布在窗口上。

    		//GridLayout布局 
    		setLayout(new GridLayout(7,3));
    		for(int i = 0;i < 20;i++){
    			add(new JButton("Button "+i));
    		}
        效果例如以下:

    4. GridBagLayout 

      GridLayout提供了强大控制功能,包含精确推断视窗区域怎样布局,以及视窗大小变化时怎样又一次放置组件。

    只是,它也是最复杂的布局管理器。因此,能够考虑使用TableLayout来替代。

    5.  绝对定位

      也能够设置图形组件的绝对位置:

      1) 使用setLayout(null)方法把窗体的布局管理器设置为空。

      2)    为每一个组件调用setBounds(),为该方法传递以像素坐标为单位的边界矩形的參数。

    6. BoxLayout

           BoxLayout具有GridBagLayout的很多优点,却不像GridBagLayout那么复杂。

    BoxLayout能够在水平方向或者垂直方向控制组件的位置。而且通过所谓的“支架和胶水”的机制来控制组件的间隔。

    总结:

      这么多的布局管理器,其实。在某些情况下,手工编写GUI窗口就不太合适了,这样做太复杂。也不能充分利用编程时间,所以对于较复杂的窗口还是要用GUIS构造工具,我们仅仅须要理解布局的方式以及怎样处理事件就可以。




  • 相关阅读:
    [置顶] win7 && win8 下安装SqlServer 2008出现错误无法将对象实例化的问题
    [置顶] sizeof()和c++中变量们
    [置顶] sql2008 附加数据库 .mdf 出现错误 解决方案
    [置顶] 漂亮的 tab 样式
    [置顶] 认识指针和指针变量
    [置顶] SqlHelper类
    [置顶] 第一次使用事物 利用线性表
    [置顶] 设计模式之单例模式 (Design patterns of the The singleton pattern)c#
    [置顶] ListBox控件的数据绑定
    RedHat 6.0(64位)如何使用CentOS YUM源更新的方法
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/7289511.html
Copyright © 2020-2023  润新知