zoukankan      html  css  js  c++  java
  • Swing-布局管理器之BorderLayout(边界布局)-入门

    注:本文内容基本源于Java图形化界面设计——布局管理器之BorderLayout(边界布局),笔者学习过程中根据自身理解进行少量编辑。

      边界布局管理器(BorderLayout)把容器的的布局分为五个位置:CENTER、EAST、WEST、NORTH、SOUTH。依次对应为:上北(NORTH)、下南(SOUTH)、左西(WEST)、右东(EAST),中(CENTER),如下图所示。

     

      特征:

    l  可以把组件放在这五个位置的任意一个,如果未指定位置,则缺省的位置是CENTER。

    l  南、北位置控件各占据一行,控件宽度将自动布满整行。东、西和中间位置占据一行;若东、西、南、北位置无控件,则中间控件将自动布满整个屏幕。若东、西、南、北位置中无论哪个位置没有控件,则中间位置控件将自动占据没有控件的位置。

    l  它是窗口、框架的内容窗格和对话框等的缺省布局。

    1、  常见的构建函数和方法

    BorderLayout(): 构造一个组件之间没有间距(默认间距为0像素)的新边框布局。

    BorderLayout(int hgap, int vgap) :  构造一个具有指定组件(hgap为横向间距,vgap为纵向间距)间距的边框布局。

    getHgap():返回组件之间的水平间距。
    getVgap():返回组件之间的垂直间距。
    removeLayoutComponent(Componentcomp):从此边框布局中移除指定组件。
    setHgap(inthgap):设置组件之间的水平间距。
    setVgap(intvgap):设置组件之间的垂直间距。

    实例:

    import java.awt.BorderLayout;
    import java.awt.Font;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    
    /*
     * @2015-06-08
     */
    
    public class BorderLayoutDemo extends JFrame{
        public BorderLayoutDemo(){
            setLayout(new BorderLayout(5, 5));
            setFont(new Font("Helvetica", Font.PLAIN, 14));
            getContentPane().add(new JButton("North"), "North");
            getContentPane().add(new JButton("South"), "South");
            getContentPane().add(new JButton("West"), "West");
            getContentPane().add(new JButton("East"), "East");
            getContentPane().add(new JButton("Center"), "Center");
            pack();
        }
        
        
        public static void main(String args[]){
            BorderLayoutDemo frame = new BorderLayoutDemo();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        }
    }

    运行效果如下:

    图1 运行效果

    图2 窗体缩放效果

      从图2可以看出,对窗体进行缩放时,控件尺寸将自动进行填充。其中,南北侧控件的高度不变,仅填充宽度;东西侧控件的宽度不变,仅填充高度。

     

  • 相关阅读:
    进程池,线程池,协程,gevent模块,协程实现单线程服务端与多线程客户端通信,IO模型
    线程相关 GIL queue event 死锁与递归锁 信号量l
    生产者消费者模型 线程相关
    进程的开启方式 进程的join方法 进程间的内存隔离 其他相关方法 守护进程 互斥锁
    udp协议 及相关 利用tcp上传文件 socketserver服务
    socket套接字 tcp协议下的粘包处理
    常用模块的完善 random shutil shevle 三流 logging
    day 29 元类
    Django入门
    MySQL多表查询
  • 原文地址:https://www.cnblogs.com/pzy4447/p/4562167.html
Copyright © 2011-2022 走看看