Jython 布局管理
在Java中,布局管理器是负责管理容器对象中控件的摆放位置的类,例如 Frame, Dialog 或 Panel 。无论分辨率如何变化或框架本身如何调整大小,布局管理器都可以维护控件在框架中的相对位置。
这些类实现了 布局接口 。以下布局管理器在 AWT库 中定义:
- BorderLayout
- FlowLayout
- GridLayout
- CardLayout
- GridBagLayout
以下布局管理器在 Swing库 中定义:
- BoxLayout
- GroupLayout
- ScrollPaneLayout
- SpringLayout
在以下示例中,我们将使用AWT布局管理器和Swing布局管理器。
- Absolute Layout
- Flow Layout
- Grid Layout
- Border Layout
- Box Layout
- Group Layout
现在让我们逐个详细讨论它们。
Absolute Layout
在我们探索上述所有布局管理器之前,我们必须看一下容器中控件的绝对定位。我们需要将框架对象的布局方法设置为’None’。
然后通过调用 setBounds() 方法来放置控件。它接受四个参数 – x位置,y位置,宽度和高度。
例如 – 在绝对位置放置一个按钮对象,并设置绝对大小。
同样,所有的控件可以通过正确分配位置和大小来放置。这种布局相对容易使用,但当窗口调整大小时,或者当程序在屏幕分辨率改变时执行时,无法保留其外观。
在以下的Jython脚本中,使用了三个Jlabel对象分别显示文本“phy”、“maths”和“Total”。在这三个Jlabel对象前面,放置了JtextField对象。在“Total”标签的上面放置了一个Button对象。
首先创建一个JFrame窗口,并将布局设置为none。
然后根据它们的绝对位置和大小添加不同的控件。完整的代码如下所示−
上述代码的输出如下:
Jython 流布局
FlowLayout 是容器类的默认布局管理器。它从左到右、从上到下地排列控件。
在下面的示例中,使用 FlowLayout 管理器在 JFrame 中显示一个 JLabel 对象、一个 JTextField 对象和一个 JButton 对象。首先,让我们从 javax.swing 包和 java.awt 包中导入所需的类。
然后创建一个JFrame对象,并设置其位置和大小属性。
现在声明JLabel、JTextField和JButton类的对象。
最后通过调用JFrame类的 add() 方法在框架中添加这些控件。
要显示框架,将其visible属性设置为true。 完整的Jython脚本及其输出如下所示−
Jython的GridLayout
GridLayout管理器允许将控件放置在矩形网格中。每个单元格中放置一个控件。
在下面的例子中,GridLayout被应用于一个JFrame对象,将其分为4行和4列。每个网格单元格中都要放置一个JButton对象。
让我们首先导入所需的库 –
然后创建JFrame容器 –
现在,通过指定 4×4 的尺寸来应用 GridLayout。
我们现在应该使用两个FOR循环,每个循环从1到4,这样就能在连续的单元格中放置16个JButton对象。
最后设置框架的可见性为true。完整的Jython代码如下所示。
上述代码的输出如下:
Jython边界布局
边界布局管理器将容器分为五个地理区域,并在每个区域放置一个组件。这些区域由以下定义的常量表示:
- BorderLayout.NORTH
- BorderLayout.SOUTH
- BorderLayout.EAST
- BorderLayout.WEST
- BorderLayout.CENTER
让我们考虑以下示例:
Jython BoxLayout
BoxLayout类定义在 javax.swing包 中。它用于在容器中垂直或水平排列组件。方向由以下常量确定−
- X_AXIS
- Y_AXIS
- LINE_AXIS
- PAGE_AXIS
整数常量指定容器的组件应该布局的轴。当容器具有默认组件方向时,LINE_AXIS指定组件从左到右布局,PAGE_AXIS指定组件从上到下布局。
在下面的示例中,将panel(JPanel类)添加到JFrame对象中。给它应用了垂直BoxLayout,并在其中添加了另外两个面板:top和bottom。这两个内部面板中的每一个都有两个按钮,这些按钮是在水平BoxLayout中添加的。
首先我们先创建顶级的JFrame窗口。
这个JPanel对象被声明为具有垂直BoxLayout。将其添加到顶层框架中。
在此面板中,还添加了两个上下方面板。每个面板水平添加了两个JButton对象,它们之间有一个25像素的间隔。
同样地,底部面板被建造成形。
请注意, createRigidArea() 函数用于在两个按钮之间创建一个25像素的间隔。另外, createVerticalGlue() 函数占据布局中的前端或后端空间。
首先,添加顶部和底部面板,并将帧的可见性属性设置为true。完整的代码如下所示:
上面的代码将生成以下输出。
Jython GroupLayout
GroupLayout管理器以分层方式对组件进行分组。通过两个类进行分组, SequentialGroup 和 ParallelGroup ,它们在Java中实现Group接口。
布局过程分为两个步骤。第一步,在水平轴上放置组件,第二步在垂直轴上放置组件。每个组件在布局中必须定义两次。
有两种排列方式,顺序和并行。在两种方式中,我们可以按顺序或并行排列组件。在水平排列中,行被称为顺序组,列被称为并行组。另一方面,在并行排列中,元素的行是并行组,列是顺序组。
在下面的示例中,五个按钮被排列在如下的方式,三个按钮每行每列各出现一次。首先,在JFrame窗口中添加一个Jpanel对象,并设置其布局为GroupLayout。
然后构建JButton对象 –
下一步,我们创建一个 SequentialGroup ,名称为 LeftToRight ,向其中添加了buttonD和buttonY。它们之间,放置了一个名为 ColumnMiddle 的 ParallelGroup (垂直添加了其他三个按钮)。
现在来了垂直SequentialGroup叫做TopToBottom的定义。添加一个ParallelGroup包含三个按钮,然后再垂直排列两个按钮。
最后,将LeftToRight组水平地设置给布局对象,并将TopToBottom组垂直地设置给布局对象。完整代码如下所示−
上述代码的输出如下所示 −