‘壹’ java 布局管理器 是怎么一回事
不管按钮还是文本框都会有自己默认的大小设置方式,所有你的布局不会产出预计的结果。如下图:
按照你上面布局,理论上会出现图1布局,但是实际是图2布局方式。因为按钮会有自己的默认大小设置方式,当组件(按钮)的显示区域小于它所请求的显示区域的大小时,可用GridBagConstraints的fill属性设置布局方式。
即:在第13行和14行之间添加代码:c.fill=GridBagConstraints.BOTH;结果就会出现图1所示的效果。
‘贰’ Java中如何设置在JFrame中控件的位置和大小
Java中通过布局管理器(LayoutManager)来布局控件。
常见的布局管理器如下:
BorderLayout:Frame和Dialog的默认布局管理器。其把面板分为上北、下南、左西、右东和中间,5个部分,在未指定控件大小的情况下,被加入的控件将会随着内容大小自动伸缩,随着窗口的放大缩小也相应的产生伸缩。
FlowLayout :按顺序布局控件。所有控件按照流水一样排列,若当前行放不下了,则自动排到下一行。按子控件的大小(getPreferedSize())在当前面板布局。
GridLayout :网格布局。该布局将所有控件按从左到右,从上到下的形式把控件以网格的形式排列出来。子控件会填满整个面板。
GridBagLayout :网格包布局。能布局复杂界面,但其使用也很复杂,一般不用。
null布局:即将布局管理器设置为null。此时,通过调用子控件的setBounds方法进行布局。
其他布局管理器。以上是Java内置的常用布局管理器,还有一些非官方的好用布局管理器:XYLayout(按大小和位置布局)、VerticalFlowLayout (纵向流水布局)、TableLayout(表格布局)。
一般的Java程序布局方式:用FlowLayout布局一些按钮,用BorderLayout嵌套多个面板。
‘叁’ java GUI布局管理器---FlowLayout流动布局管理器
FlowLayout 是一种简单的布局管理器,与 MATLAB 中的 GUI 设计类似。其主要用途在于将组件按照添加顺序从左向右放置,直到边界,之后组件自动移到下一行。
FlowLayout 的构造方法为 FlowLayout(int align, int hgap, int vgap),允许指定组件的对齐方式和水平、垂直间距。若不提供参数,默认组件居中对齐,水平、垂直间距默认为5个单位。
参数 align 决定组件在每行中的对齐方式,可选择左对齐(FlowLayout.LEFT)、右对齐(FlowLayout.RIGHT)或居中对齐(FlowLayout.CENTER)。hgap 和 vgap 分别设定组件之间的水平和垂直间距。
下面是一个详细案例,展示了如何使用 FlowLayout 来布局按钮组件。
通过导入必要的 Java AWT 和 Swing 库,定义一个名为 FlowLayoutTemp 的公共类。
在该类中,创建一个名为 creatshowGUI 的静态方法,用于创建并显示使用 FlowLayout 的窗体。
在 creatshowGUI 方法中,创建一个名为 FlowLayout 的 JFrame 窗体,并设置其标题为 "FlowLayout"。使用 FlowLayout 构造方法设置组件的对齐方式为左对齐,水平间距为20,垂直间距为30。
接着,设置窗体的大小和显示位置,并将多个按钮组件添加到窗体中。
最后,使窗体可见,并设置关闭事件为当窗口关闭时程序退出。
在 main 方法中,调用 SwingUtilities 工具类的 invokeLater 方法,传入 creatshowGUI 方法,以显示 GUI。
运行此代码,将看到一个使用 FlowLayout 布局的窗口,包含多个按钮组件,排列方式符合设计要求。
通过本案例,可以直观地了解如何使用 FlowLayout 来实现组件的流动布局管理。