JFrame的默认布局就是BorderLayout,即将一个窗体划分为东西南北中五个板块。

如果往其中添加组件,中间面板大小随窗体大小变化,其余部分根据添加的组件的大小自适应。

容器变高,则North,South区域不变,West,East,Center区域变高

容器变宽,则West,East区域不变,North,South,Center区域变宽

注意,这种布局下,每个区域最多只能包含一个组件。

五个区域默认是看不到边界线的,即距离为0.

如何设置间距?

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

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

int getHgap() : 返回组件之间的水平间距。

int getVgap() :返回组件之间的垂直间距。

void removeLayoutComponent(Component comp): 从此边框布局中移除指定组件。

void setHgap(int hgap):设置组件之间的水平间距。

void setVgap(int vgap) :设置组件之间的垂直间距。

 

那么如何控制这几个板块的高度与宽度?

我们发现setSize,setLocation,setBounds,或者setMaximumSize()和setMinimumSize()都达不到效果

需要使用setPreferredSize。

1.setPreferredSize需要在使用布局管理器的时候使用,布局管理器会获取空间的preferredsize,因而可以生效。例如borderlayout在north中放入一个panel,panel的高度可以通过这样实现:panel.setPreferredSize(new Dimension(0, 100));JFrame.getContentPane().add(panel,BorderLayout.SOUTH);这样就设置了一个高度为100的panel,宽度随窗口变化。

2.setSize,setLocation,setBounds方法需要在不使用布局管理器的时候使用,也就是setLayout(null)的时候可以使用这三个方法控制布局。

设置按钮大小用setSize无效?

button.setPreferredSize(new Dimension(80,50));

这样就可以了。

设置间隔?

设置组件的位置,左对齐,居中,右对齐?

重新设置为FlowLayout布局

JFrame的BorderLayout的更多相关文章

  1. Java SE (1)之 JFrame 组件 BorderLayout 布局

    JAVA 初期,练习SE ,桌面程序, package com.sunzhiyan; import java.awt.*; import java.awt.event.*; import javax. ...

  2. Java基础之创建窗口——使用卡片布局管理器(TryCardLayout)

    控制台程序. 卡片布局管理器会生成一叠组件——一个组件放在另一个组件的上面.添加到容器中的第一个组件在堆栈的顶部,因此是可见的,添加的最后一个组件在堆栈的底部.使用默认的构造函数CardLayout( ...

  3. Java基础之创建窗口——使用边界布局管理器(TryBorderLayout)

    控制台程序. 边界布局管理器最多能在容器中放置5个组件.在这种布局管理器中,可以把组件放在容器的任意一个边界上,也可以把组件放在容器的中心.每个位置只能放置一个组件.如果把组件放置在已被占用的边界上, ...

  4. Java学习——用户界面的布局

    使用布局管理器 FlowLayout管理器 面板的默认布局管理器是java.awt包中的FlowLayout类.使用FlowLayout时,像在页面中排列英文单词那样排组件:从左到右排列,当前行没有空 ...

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

    本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 在java 中,组件放置在窗口上的方式可能与其它的GUI系统都不同样.首先,它全 ...

  6. Jpanel和container和jframe的区别

    Jpanel和container和jframe的区别 (2012-05-23 19:15:11) 转载▼ 标签: 杂谈 分类: room 看到上上面的几张图,container容器是位于最高层. 下面 ...

  7. 总结-swing、JFrame、JScrollPane、JTabbedPane、JEditorPane

    总结-swing.JFrame.JButton.JScrollPane.JLabel.JTabbedPane.JEditorPane 1.JButton内边距(去掉按钮里的空白):setMargin2 ...

  8. JFrame面板

    1.可见性与透明性 可见性:当面板不可见时,则该面板中包含的组件会无法显示. 透明性:若该面板是可见且透明的,那么只是面板会透明(比如面板的背景色无法看到),面板上的组件仍会显示. 注:可见性通过se ...

  9. 转:三十、Java图形化界面设计——布局管理器之BorderLayout(边界布局)

    http://blog.csdn.net/liujun13579/article/details/7772215 边界布局管理器把容器的的布局分为五个位置:CENTER.EAST.WEST.NORTH ...

随机推荐

  1. 【Java基础总结】多线程

    1. 实现多线程的两种方式 //第一种:继承Thread类,重写run()方法 class ThreadTest1 extends Thread{ public void run(){ String ...

  2. 【JavaWeb学习】过滤器Filter

    一.简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静 ...

  3. YOLOv3 K-means获取anchors大小

    YOLOv1和YOLOv2简单看了一下,详细看了看YOLOv3,刚看的时候是蒙圈的,经过一番研究,分步记录一下几个关键的点: v2和v3中加入了anchors和Faster rcnn有一定区别,这个a ...

  4. SharePoint REST 上传文件请求403错误

    最近,需要在SharePoint上传文件到文档库,但是,上传的过程报错了. 错误代码 { "error": { "code": "-213057525 ...

  5. 根据输入参数,判定时间范围CheckTimeSpan

    对于C#的开发的网页程式,一些企业或者工厂可能会运用这些程式去查询一些资料,考虑到查询的资料太多,假如一个月的资料就有上万条数据,在对于查询资料的SQL语句后时间栏位运用Between.....AND ...

  6. LGV - 求多条不相交路径的方案数

    推荐博客 :https://blog.csdn.net/qq_25576697/article/details/81138213 链接:https://www.nowcoder.com/acm/con ...

  7. django.db.migrations.exceptions.MigrationSchemaMissing和raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)

    1.使用Python3.7 + Django2.2 + MySQL 5.5 在执行(python manage.py migrate)命令时出现错误django.db.migrations.excep ...

  8. 基于AOP和ThreadLocal实现的一个简单Http API日志记录模块

    Log4a 基于AOP和ThreadLocal实现的一个简单Http API日志记录模块 github地址 : https://github.com/EalenXie/log4a 在API每次被请求时 ...

  9. python3文件操作

    文件操作的过程 1)打开 2)操作 3)关闭 1.写(清空写入) # f = open(file='test', mode='w', encoding='utf-8') # 第一种情况 # f.wri ...

  10. PyCharm2019.3.2专业版激活

    PyCharm2019.3.2专业版激活 Ryan 蚂蚁小黑  PyCharm 专业版激活 今天是除夕,在这阖家团圆的日子里,祝大家新春快乐,鼠年大吉,愿大家在新的一年里身体健康,万事如意! 新的一年 ...