Java Swing JPanel 使用 BorderLayout 和 Flow
今天我们将学习java swing的JPanel 的创建以及 BorderLayout 和 FlowLayout这两个布局类的详解,这篇文章主要涉及以下几个方面。
1、什么是JPanel,并创建JPanel。
2、JPanel的两个布局类BorderLayout和FlowLayout的详解。
什么是JPanel?简单地说, JPanel是一个简单的容器类,它为应用程序添加其他组件提供了空间。JPanel有自己的布局管理器,与包含它的JFrame分开。
我这边又创建了一个新的java项目,名为swing_jpanel,并添加了一些swing代码来创建一个新的JFrame。
JFrame是我们在上一个文章中讨论过的组件,没有经验的可以进我的主页先去看看那篇文章。
在开始JPanel 之前我们先看一下JPanel的构造函数。
JPanel的构造函数(也称为构造方法)总共有四种,见下图:
默认的JPanel也就是 new JPanel()等于Flow JPanel,如果你看过我之前的文章,就知道JFrame有一个默认的边框(BorderLayout)布局管理器,而默认的JPanel的布局管理器是一个流(FLowLayout)布局。
注意这里的默认布局,我们都知道,在没有指定任何布局的情况下,你往JFrame中添加一个Jbutton,那么这个Jbutton 将占据这个JFrame的全部面板,类似下面这样。
看起来很丑是不是 - -,哈哈,我也想吐槽来着。
这是默认没有添加任何布局的JFrame代码。
下面是这个超大按钮的界面源码
所以你如果是在JFrame中使用BorderLayout这个布局管理器,我们不必特别指定任何参数就可以使用,因为它们是默认值,但是如果我们想要更改与布局管理器相关的任何参数,我们就必须要显式地指定这些参数。
接下来再来看看JPanel的默认布局,
再来看看形成这个面板的代码
在这个代码中,我们并没有显式的设定任何布局,而它默认的形成了上面的样式,也就是流式布局。下面,让我们为JPanel设置另外一种布局管理器,也就是BorderLayout,或者叫边框、边界布局管理器。
在这里我们可以指定添加到JPanel中的组件的对齐方式以及水平和垂直的差距。
注意:
new BorderLayout的参数 hgap 和 vgap 的意思分别指的是 水平间距,以及垂直间距。
hgap是水平间距,vgap是垂直间距。
注:
水平间距 指的是 横向 坐标点 间距 ,也就是 X 轴 距离
垂直间距 指的是 纵向 坐标点 间距 ,也就是 Y 轴 距离
我们来看这样一段代码。
为了更大的看出效果,水平间距我调到30,垂直间距我调到 1
看结果
(1)红色部分都是间距,为了方便我将布局颜色调整为了红色。
(2)Button 2 与 Button 4 之间的这个宽度,也就是水平间距为 30
(3)我们再测量一下 间隔单位 是否 确切为像素
(4)首先获取 button 2 左侧边栏的距离,相对于桌面屏幕边缘的,X轴距离为 705
(5)然后获取 button 4 右侧边栏的距离,相对于桌面屏幕边缘的,X轴距离为 735
(6)可以确定,这个距离的单位为 像素点,也就是间隔 多少多少个像素点。
我们再来看 JPanel 的流式布局,这一次我们要显式的指定它的参数。
前面讲了,JPanel的布局默认是流式的,而流式布局的默认选择是居中的,我们想要调整流式布局要怎么做呢?
我们需要第二种构造方式,new FlowLayout(int align),并向其中传递一个参数,这个参数为 int类型,参数 代表了 控件的对齐方式:
以下是参数列表
我们来应用尝试一下。
这种是Left
这种是Right
这种为Leading
这种是Trailing
要注意的是 leading 和 left是同样的;trailing 与 right是同样的。
Leading表示开始的位置,Trailing表示结束的位置。
而 FlowLayout的第三个构造函数,参数分别代表起始位置,水平间隔,垂直间隔。关于这个在上面已经讲过,我们这边不再累述。
这篇文章到这里就结束了,如果对你有帮助,还希望你点赞收藏加关注!如果有其他问题或者建议可以在评论区留言指出。
本文使用系统:win7 64
Java开发环境:Eclipse 2022-10-19
JDK版本:JDK17
举报/反馈