布局管理器使用

布局管理器使用
布局管理器使用

布局管理器的使用

在前一篇中我们学习了使用资源文件为主窗口添加菜单图标。这次,我们先将菜单进行完善,然后讲解一些布局管理方面的内容。

一、完善菜单

1.新建Qt Gui应用,项目名称为myMainWindow,基类选择QMainWindow,类名为MainWindow。

2.完成后,在设计模式添加菜单项,并添加资源文件,向其中添加菜单图标。最终各个菜单如下图所示。

在Action编辑器中修改动作的对象名称、图标和快捷键,最终如下图所示。

二、向工具栏添加菜单图标

可以将动作编辑器中的动作拖动到工具栏中作为快捷图标使用,如下图所示。

可以在工具栏上点击鼠标右键来添加分隔符,如下图所示。

最终工具栏如下图所示。

三、布局管理器

1.从左边控件栏中拖入三个按钮Push Button和一个Vertical Layout(垂直布局管理器)到界面上,如下图所示。

然后将三个按钮拖入到布局管理器中,这时三个按钮就会自动垂直排列,并且进行水平拉伸,无论如何改变布局管理器的大小,按钮总是水平方向变化。如下图所示。

2.我们可以选中布局管理器,然后按下上方工具栏中的“打破布局”按钮来删除布局管理器。(当然也可以先将三个按钮移出,然后按下Delete键来删除布局管理器,如果不移出按钮,那么会将它们同时删除。)如下图所示。

3.下面我们使用分裂器(QSplitter)来进行布局,先同时选中三个按钮,然后按下上方工具栏中的“使用分裂器垂直布局”按钮,如下图所示。

然后我们进行放大,可以发现,使用分裂器按钮纵向是可以变大的,这就是分裂器和布局管理器的重要区别。如下图所示。

4.布局管理器除了可以对部件进行布局以外,还有个重要用途,就是使部件随着窗口的大小变化而变化。我们删除界面上的部件,然后拖入一个文本编辑器Text Edit部件。如下图所示。

然后我们在界面上点击鼠标右键,选择布局→栅格布局(或者使用快捷键Ctrl+G)。

这时整个文本编辑器部件就会填充中央区域。如下图所示。现在运行程序,可以发现,无论怎样拉伸窗口,文本编辑器总是填充整个中央区域。

这一篇中我们主要介绍了布局管理器的应用,而且都是在设计模式对布局管理器的使用。这里使用三种方式进行了演示:从控件栏中拖入布局管理器;在工具栏中使用图标;还有使用右键菜单(当然还有快捷键的方式)。

在本篇中主要对垂直布局管理器进行了演示,大家还可以使用其他的布局管理器进行测试。对于如何在代码中使用布局管理器,以及使用布局管理器实现可隐藏窗口,可以参考《Qt Creator快速入门》一书的相关章节。

文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!

有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!

有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!

有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!文档附件上传成功,但与已有文档重复,只能自己阅读!

布局管理器主要包括

布局管理器主要包括:FlowLayout,BorderLayout,GridLayout,CardLayout,GridBagLayout 例3 import java.awt.*; public class ExGui{ private Frame f; private Button b1; private Button b2; public static void main(String args[]){ ExGui that = new ExGui(); that.go(); } public void go(){ f = new Frame("GUI example"); f.setLayout(new FlowLayout()); //设置布局管理器为FlowLayout b1 = new Button("Press Me"); //按钮上显示字符"Press Me" b2 = new Button("Don't Press Me"); f.add(b1); f.add(b2); f.pack(); //紧凑排列,其作用相当于setSize(),即让窗口 尽量小,小到刚刚能够包容住b1、b2两个按钮 f.setVisible(true); } } 查看运行结果 1. FlowLayout FlowLayout 是Panel,Applet的缺省布局管理器。其组件的放置规律是从上到下、从左到右进行放置,如果容器足够宽,第一个组件先添加到容器中第一行的最左边,后续的组件依次添加到上一个组件的右边,如果当前行已放置不下该组件,则放置到下一行的最左边。 构造方法主要下面几种: FlowLayout(FlowLayout.RIGHT,20,40); /*第一个参数表示组件的对齐方式,指组件在这一行中的位置是居中对齐、居右对齐还是居左对齐,第二个参数是组件之间的横向间隔,第三个参数是组件之间的纵向间隔,单位是象素。*/ FlowLayout(FlowLayout.LEFT);

GroupLayout布局管理器介绍

GroupLayout布局管理器介绍 GroupLayout 是一个 LayoutManager,它将组件按层次分组,以决定它们在Container 中的位置。GroupLayout 主要供生成器使用,但也可以手工编码。分组由Group类的实例来完成。GroupLayout 支持两种组。串行组 (sequential group) 按顺序一个接一个地放置其子元素。并行组 (parallel group) 能够以四种方式对齐其子元素。 每个组可以包含任意数量的元素,其中元素有 Group、Component 或间隙 (gap)。间隙可被视为一个具有最小大小、首选大小和最大大小的不可见组件。此外,GroupLayout 还支持其值取自 LayoutStyle 的首选间隙。 元素类似于一个弹簧。每个元素都有一个范围,由最小大小、首选大小和最大大小指定。间隙的范围由开发人员指定,或者由 LayoutStyle 确定。Component 的范围通过 Component 的 getMinimumSize、getPreferredSize 和getMaximumSize 方法确定。此外,添加 Component 时,可以指定使用一个特定范围,而不使用该组件的范围。Group 的范围由组的类型确定。ParallelGroup 的范围是其元素范围的最大值。SequentialGroup 的范围是其元素范围的总和。 GroupLayout 将每个轴 (axis) 单独对待。也就是说,存在一个表示水平轴的组和一个表示垂直轴的组。水平组负责确定沿水平轴的最小大小、首选大小和最大大小,并设置所包含组件的 x 和宽度。垂直组负责确定沿垂直轴的最小大小、首选大小和最大大小,并设置所包含组件的 y 和高度。每个 Component 都必须同时存在于水平组和垂直组中,否则,在布局过程中或者在请求最小大小、首选大小或最大大小时,将抛出 IllegalStateException。 下图显示了一个沿水平轴的串行组。该串行组包含三个组件。沿垂直轴使用了一个并行组。 为了强调要单独对待每个轴,该图显示了沿每个轴的每个组和元素的范围。每个组件的范围已被投射到轴上,两个组分别呈现为蓝色(水平)和红色(垂直)。为了便于理解,串行组中的每个元素之间都有一个间隙。 沿水平轴的串行组呈现为蓝色实线。注意,串行组是它所包含的子元素的总和。 沿垂直轴,并行组是每个组件高度的最大值。由于三个组件的高度都相同,所以并行组具有相同的高度。

java笔记4(布局管理器常用组件qq聊天界面记事本)

Java笔记4(布局管理器、常用组件、qq聊天界面、记事本) 文件结构Java代码布局管理器Demo8_1.java package com.test1; import javax.swing.JButton; import javax.swing.JFrame; public class Demo8_1 extends JFrame //继承JFrame { /** * @param args */ public static void main(String[] args) { Demo8_1 demo8_1=new Demo8_1(); } //把需要的组件定义在这里JButton jb1=null; //定义一个按钮//构造函数public Demo8_1() { ////JFrame是一个顶层容器类(可以添加其它swing组件的类) //JFrame jf=new JFrame(); //给窗体设置标题 this.setTitle("Hello world"); //设置大小,按像素this.setSize(200, 200); //设置初始位置 this.setLocation(100,200); //创建一个按钮 jb1=new JButton("我是一个按钮!"); //添加JButton组件this.add(jb1); //设置当关闭窗口时,保证JVM也退出 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //显示this.setVisible(true); } } 常用组件常Demo8_2.java /* * BorderLayout演示*

GridBagLayout(网格布局管理器)结构分析与功能使用详解

java.awt 类 GridBagLayout https://www.360docs.net/doc/fb9480009.html,ng.Object java.awt.GridBagLayout 所有已实现的接口: LayoutManager, LayoutManager2, Serializable public class GridBagLayout extends Object implements LayoutManager2, Serializable GridBagLayout类是一个灵活的布局管理器,它不要求组件的大小相同便可以将组件垂直、水平或沿它们的基线对齐。每个GridBagLayout对象维持一个动态的矩形单元网格,每个组件占用一个或多个这样的单元,该单元被称为显示区域。 每个由GridBagLayout管理的组件都与GridBagConstraints的实例相关联。Constraints 对象指定组件的显示区域在网格中的具体放置位置,以及组件在其显示区域中的放置方式。除了 Constraints 对象之 外,GridBagLayout还考虑每个组件的最小大小和首选大小,以确定组件的大小。 网格的总体方向取决于容器的ComponentOrientation属性。对于水平的从左到右的方向,网格坐标 (0,0) 位于容器的左上角,其中 X 向右递增,Y 向下递增。对于水平的从右到左的方向,网格坐标 (0,0) 位于容器的右上角,其中 X 向左递增,Y 向下递增。 为了有效使用网格包布局,必须自定义与组件关联的一个或多个GridBagConstraints对象。可以通过设置一个或多个实例变量来自定义GridBagConstraints对象: GridBagConstraints.gridx、GridBagConstraints.gridy 指定包含组件显示区域的前导角的单元,在此显示区域中,位于 网格原点的单元地址是 gridx = 0, gridy = 0。对于水平的从左到右的布局,组件的前导角是其左上角。对于水平的从右到左的 布局,组件的前导角是其右上角。使用 GridBagConstraints.RELATIVE(默认值),指定会将组件直接放置在之前刚添加到容器中的组件的后面(沿 X 轴向为 gridx 或Y 轴向为 gridy)。 GridBagConstraints.gridwidth、GridBagConstraints.gridheight

整理页面布局

Android常用布局类整理(一) Android常用布局类整理 layout_width/layout_height的两种不同的方式 ①wrap_content能包裹其中的内容即可 ②fill_parent/match_parent 填满父视图的空间 FrameLayout 最简单的布局管理器,把每一个子视图放置在边框内,默认左上角,使用gravity属性来改变其位置,添加多个子视图时,会堆积在前一个子视图上面,并遮挡住上一个子视图LinearLayout

按垂直(vertical)或水平(horizontal)对齐每一个子视图,它包含的子控件将以横向或竖向的方式排列,垂直方向的布局是N行单列的结构,水平方向的布局是单行N列的结构,允许为每一个子视图制定一个weight属性,以控制在可用空间内的相对大小 android:layout_weight="1" 通过设置控件的layout_weight属性以控制各个控件在布局中的相对大小,描述该元素在剩余空间中占有的大小比例。 线性布局会根据该控件layout_weight值与其所处布局中所有控件layout_weight值之和的比值为该控件分配占用的区域。 例子:在水平布局的LinearLayout中有两个Button,这两个Button的layout_weight 属性值都为1,那么这两个按钮都会被拉伸到整个屏幕宽度的一半。如果layout_weight

指为0,控件会按原大小显示,不会被拉伸(默认就是0);对于其余layout_weight属性值大于0的控件,系统将会减去layout_weight属性值为0的控件的宽度或者高度,再用剩余的宽度或高度按相应的比例来分配每一个控件显示的宽度或高度。 ==========以下是button的layout_width属性设为wrap_content的时候的情况,意味着控件要优先尽可能的小===================== ①三个button的weight都不设定,默认为0,每个button占用自己本身的空间 ②三个button的weight都设置为1 android:layout_weight="1",每个button都占用1/3 ③三个button的weight分别设定为0,1,2,test占用自己原来大小,test2占用剩余空间的1/3,test3占用剩余空间的2/3 ==========以下是button的layout_width属性设为fill_parent的时候的情况,意味着控件要优先尽可能的大=====================

三十三、Java图形化界面设计——布局管理器之null布局(空布局)

三十三、Java图形化界面设计——布局管理器之null布局(空布局) 一般容器都有默认布局方式,但是有时候需要精确指定各个组建的大小和位置,就需要用到空布局。 操作方法: 1)首先利用setLayout(null)语句将容器的布局设置为null布局(空布局)。 2)再调用组件的setBounds(int x, int y, int width,int height)方法设置组件在容器中的大小和位置,单位均为像素。 x为控件左边缘离窗体左边缘的距离 y为控件上边缘离窗体上边缘的距离 width为控件宽度 height为控件高度 实例:使用空布局精确定位组件的位置 // NullLayoutDemo.java

import java.awt.*; import javax.swing.*; public class NullLayoutDemo{ JFrame fr; JButton a,b; NullLayoutDemo() { fr = new JFrame(); fr.setBounds(100,100,250,150); //设置窗体为空布局 fr.setLayout(null); a=new JButton("按钮a"); b=new JButton("按钮b"); fr.getContentPane().add(a); //设置按钮a的精确位置 a.setBounds(30,30,80,25);

fr.getContentPane().add(b); b.setBounds(150,40,80,25); fr.setTitle("NullLayoutDemo"); fr.setVisible(true); fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fr.setLocationRelativeTo(null); //让窗体居中显示} public static void main(String args[]){ new NullLayoutDemo(); } } 程序运行结果如下:

android实验3界面设计:布局管理器

西安邮电大学 (计算机学院) 课内实验报告实验名称:界面设计:布局管理器 专业:网络工程 班级: 姓名: 学号: 指导教师: 日期:2017年5月4日

一.实验目的 1. 了解四种布局管理器的区别和各自特别的属性 2. 掌握四种布局管理器的应用场合和用法 3. 灵活使用四种布局文件管理器和嵌套实现各种复杂布局 4. 掌握复用XML布局文件的方法 5. 掌握代码控制UI界面的方法 二.实验环境 JDK的版本: "1.8.0_40" IDE: eclipse 4.6.1 模拟器: 夜神模拟器 三.实验内容 设计的样式,完成Android应用UI的应用开发 四.实验过程及分析 1.用JA V A代码设置全屏 打开工程src目录下的主Activity文件,在onCreate方法中的执行语句super. onCreate(savedInstanceState)之前,添加如下两句语句 requestWindowFeature(Window.FEATURE_NO_TITLE); //隐藏标题栏this.getWindow().setFlags(https://www.360docs.net/doc/fb9480009.html,youtParams.FLAG_F ULLSCREEN,https://www.360docs.net/doc/fb9480009.html,youtParams.FLAG_FULLSCREEN); //隐藏运营商图标、电量等 2. 按照图1设计的样式,完成一个Android应用UI的开发 (1)添加代码

JAVA布局管理器

前言 随着Internet的飞速发展,Java技术也得到了越来越广泛的应用。而无论我们是采用J2SE、J2EE还是J2ME,GUI都是不能回避的问题。现在的应用软件越来越要求界面友好、功能强大而又使用简单。而众所周知,在Java中进行GUI设计相对于其跨平台、多线程等特性的实现要复杂和麻烦许多。这也是很多Java 程序员抱怨的事情。但GUI已经成为程序发展的方向,所以我们也必须了解Java 的GUI设计方法和特点。其实,采用Java提供的布局管理器接口和相应的布局管理类,我们也可以做出相当漂亮的界面来,当然实现起来肯定要比VB麻烦许多。本文试图通过自己的开发经历介绍一些具体的应用实例,希望能给那些曾经象我一样苦闷的Java痴迷者一些帮助。 2 Java中的布局管理器 2.1 为什么要使用布局 在实际编程中,我们每设计一个窗体,都要往其中添加若干组件。为了管理好这些组件的布局,我们就需要使用布局管理器。比如说,设计一个简单的计算器,或一个文本编辑器等等。这些组件是让JVM 自己任意安排呢?还是按照一定的位置关系进行规范的安排呢?当然应该选择后者。将加入到容器的组件按照一定的顺序和规则放置,使之看起来更美观,这就是布局。在Java中,布局由布局管理器 (LayoutManager) 来管理。那么,我们在什么时候应该使用布局管理器?应选择哪种布局管理器?又该怎样使用布局管理器呢? 如果你写的是GUI程序,在使用AWT/Swing组件时就不应硬性设置组件的大小和位置,而应该使用Java的布局管理器(LayoutManager)来设置和管理可视组件的大小和位置,否则就有可能造成布局混乱。不信,你可以新建一个Frame(或JFrame),通过setBounds()方法往其中添加几个Button(或JButton),一旦你将窗体拉大或缩小时,你会发现组件的排列完全不是按你所预想的那样。为了解决这个问题,即当窗体(或容器)缩放时,组件位置也随之合理调整,我们就需要使用布局管理器。 为此,我们首先要知道Java的布局方式,Java提供的API中有些什么布局管理器,它们的布局特点是什么。 2.2 Java的布局方式 我们都知道,Java的GUI界面定义是由AWT类包和Swing类包来完成的。它在布局管理上采用了容器和布局管理分离的方案。也就是说,容器只管将其他组件放入其中,而不管这些组件是如何放置的。对于布局的管理交给专门的布局管理器类(LayoutManager)来完成。 现在我们来看Java中布局管理器的具体实现。我们前面说过,Java中的容器类(Container),它们只管加入组件(Component),也就是说,它只使用自己的

JAVA布局管理

JA V A布局管理 一、FlowLayout(流布局管理):其组件的放置规律是从上到下,从左到右依次进行放置。构造方法有下列几种: 1.F lowLayout():创建每行组件居中对齐、组件间距为5个像素单位。 2.F lowLayout(int align):创建指定每行的对齐方式、组件间距为5个像素单位。 align取值表示组件的对齐方式:CENTER(居中对齐),LEFT(左对齐),RIGHT(右对齐)。 二、BorderLayout(边框布局管理):将容器分为上、下、左、右、中五个区域,分别对应North(北区),South(南区),West(西区),East(东区)和Center(中区)。用add(component,index)方法向容器中添加组件,其中第二个参数指明组件位置,其取为:BorderLayout.North,BorderLayout.South,BorderLayout.East,BorderLayout.West,BorderLayout.Center。其构造方法有中下几种: 1.B orderLayout():创建组件间无间距的布局对象。 2.B orderLayout(int hgap,int vgap):创建指定组件间距的布局对象。

三、GridLayout(网格布局管理器):将容器分成尺寸相同 的网格,组件被放在网格的空白处,顺序与流式布局一样。 网格中组件大小相同。其构造方法有下列几种: 1.GridLayout()以每行一列的方式构建一个GridLayout 对象。 2.GridLayout(int row,int columns):根据指定行数和列数 构造一个GridLayout对象,组件间距为0。 3.GridLayout(int row,int columns,int hgap,int,vgap): 根据 指定行数和列数构造一个GridLayout对象,组件间距按指定值设置。 四、CardLayout( 卡片布局管理器):它将组件放在一系 列卡片上,一次只能看到一张卡片,一张卡片只能放一个组件。使用构造方法CardLayout()可以构建CardLayout对象。 组件按添加顺序存放在卡片序列中,使用下列方法将组件添加到容器中: add(Component,component,String name); name是卡片中组件的标识。 为了使组件在使用CardLayout容器中可见,可使用CardLayout对象的下列方法: 1)first(Container container):显示第一张卡片。 2) last(Container container):显示最后一张卡片。

java布局管理

一、实验目的:(详见指导书,宋体小四) 掌握Java图形Swing组件和布局管理器的使用; 掌握使用Java事件处理机制的使用。 掌握图形界面的各种控件的使用,如:标签、文本框、按钮、复选框、列表框、窗框等。 二、实验要求:(详见指导书,宋体小四) 1.采用布局管理器进行界面的布局; 2. 学会对不同的事件用相应的事件处理器; 3.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提材示, 并给出解决办法。(附运行界面、源代码)。 三、实验内容及过程:(宋体小四,) 1.编写Application程序,在JFrame中加入2个按钮(JButton)和1个标签 (Label),单击两个按钮,显示按钮的标签于Label。 过程:首先建立一个主类,让主类继承JFrame 类实现 ActionListener 接口。然后在主类中声明变量JButton ,JPanel。创建一个面板panel然后在创建两个按钮,面板使用流式布局,然后将两个按钮添加到面板中,再将面板添加到窗体的上部。然后在建立一个标签,将标签添加到窗体的下方。最后要在两个按钮失眠分别添加监听器,保证当触动按钮时按钮上的字体能够出现在标签上。 2.在JApplet中加入1个文本框,1个文本区,每次在文本框中输入文本,回车后将文本添加到文本区的最后一行。 过程:首先创建一个窗体,窗体里插入一个文本框和一个文本区,分别将文本框放在窗体的上方,文本区放在窗体的下方。重点就是在文本框上添加一个键盘监听器,保证当触动Enter键时能够将文本框中的内容复制到文本区中即可。 3.设计一个简单计算器,如下图所示。在“操作数”标签右侧的两个文本框输入操作数,当单击操作符+,-,×,÷按钮时,对两个操作数进行运算并将

实验2 UI界面开发--布局管理器的使用

实验2、View及布局管理器的使用 一、实验目的 1、了解View类、ViewGroup的作用 2、掌握常用布局管理器的使用 3、掌握XML界面控制的设计方法 4、从本周起,以后每次小课的实验内容,要求上传FTP。 二、实验步骤 1、线性布局的例子,补充代码,使程序运行效果如下所示 图1 线性布局 LinearlayoutDemo.java代码不用做任何修改,直接通过main.xml文件控制UI 界面。 下面是布局文件main.xml中的内容,请补充完整,实现图1中的界面: //排列方式(horizontal水平排列,vertical垂直排列)

android:layout_height="wrap_content" android: layout_weight ="2"//设置所占相对宽度 android:background="#aa0000" android:gravity="center_vertical"//设置主件对齐方式 android:singleLine="true"//若为true,看不到的文字用……表示 android:text=" 广州大学华软软件学院" android:textSize="15pt"/> 2、相对布局管理器的使用,补充代码,使程序运行的效果如下图所示: 图2相对布局运行效果 RelativeLayoutDemo.java中的源代码如下所示:

AutoCAD 工程师参考样题

2013 AutoCAD 工程师参考样题 1)为了保证布局空间尺寸标注与模型空间的对象保持关联性,必须将系统变量DIMASSOC 设置成多少 1 2 3 参考答案:3 2)下列哪一个选项不属于solview 的命令参数? UCS(U) 正交(O) 辅助(A) 立面(E) 参考答案:4 3)在标注对象时:关联标注的打开和关闭是由哪一个系统变量控制? assocdim assoconoff dimassoc assocupdate 参考答案:3 4)如图所示,左图中的“销连接”和“轴装配”,右图中“底座局部”和“全图”,分别代表什么? 左图为DWG 文件,右图为DWF 文件 左图为模型空间,右图为布局 左图为模型视图,右图为图纸视图 左图为图纸视图,右图为模型视图 参考答案:3

5)关于发布、传递和归档图纸集的说法下列说法不正确的是: 可使用CTRL 键从图纸选择中添加和删除项目不能直接修改图纸选择,而是要先激活图纸选择并进行修改既可以基于现有图形从头开始创建图纸集,也可以使用图纸集样例作为样板进行创建以上说法均不正确参考答案:4

Autodesk 2013 认证6)相机的新增功能中,广角相机的镜头为多少? 50MM 35MM 16MM 6MM 参考答案:2 7)标准渲染预设中,哪个渲染质量是最好的? 草图质量 中等质量 高级质量 演示质量 参考答案:4 8)渲染中,暗角和光源中的低频率变化,通过哪个途径可以减少或消除? 全局照明 集中采集 光源特性 以上都可以 参考答案:2 9)在Streering Wheels 控制盘中,单击动态观察选项,可以围绕轴心进行动态观察,动态观察的轴心使用鼠标加什么键盘可以调整? Shift Ctrl Alt Tab 参考答案:2 10)三维十字光标中,下面哪个不是十字光标的标签? X,Y,Z N,E,Z N,Y,Z 以上说法均正

Java_swing布局详解(附示例图)

当选择使用JPanel和顶层容器的content pane时,需要考虑布局管理。JPanel缺省是初始化一个FlowLayout,而content pane缺省是初始化一个BorderLayout。 下面将分别介绍几种最常用的布局管理器:FlowLayout、BorderLayout、BoxLayout、CardLayout、GridLayout和GridBagLayout。 代码演示 每一个布局管理器都会有一个代码演示,xxxLayoutDemo.java(见附件)。这些文件主要有三个方法组成: addComponentsToPane()提供布局逻辑(依据不同的布局管理器和UI内容)。 Java代码 1public static void addComponentsToPane(Container pane) {。。。} 2/** 3*createAndShowGUI()实例化一个JFrame,通过它的ContentPane加载布局逻辑内容。 4*/ 5private static void createAndShowGUI() { 6// Create and set up the window. 7JFrame frame = new JFrame("FlowLayoutDemo"); 8frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 9// Set up the content pane. 10addComponentsToPane(frame.getContentPane()); 11// Display the window. 12frame.pack(); 13frame.setVisible(true); 14} 15//main()程序入口,单独起一个线程,实例化UI。 16public static void main(String[] args) {

二十九、Java图形化界面设计——布局管理器之FlowLayout(流式布局)

二十九、Java图形化界面设计——布局管理器之FlowLayout (流式布局) 前文讲解了JFrame、JPanel,其中已经涉及到了空布局的使用。Java虽然可以以像素为单位对组件进行精确的定位,但是其在不同的系统中将会有一定的显示差异,使得显示效果不尽相同,为此java提供了布局管理器,以使编写的图形界面具有良好的平台无关性。 注意:所有的布局管理器均是针对容器来使用的,包括顶层容器和中间容器。 一、布局管理器所属类包

二、容器的默认布局管理器 各容器都有默认的布局管理,见下表: 三、FlowLayout(流式布局)

使用FlowLayout布局方式的容器中组件按照加入的先后顺序按照设置的对齐方式(居中、左对齐、右对齐)从左向右排列,一行排满(即组件超过容器宽度后)到下一行开始继续排列。 1、流式布局特征如下: l 组件按照设置的对齐方式进行排列 l 不管对齐方式如何,组件均按照从左到右的方式进行排列,一行排满,转到下一行。(比如按照右对齐排列,第一个组件在第一行最右边,添加第二个组件时,第一个组件向左平移,第二个组件变成该行最右边的组件,这就是从左向右方式进行排列) 2、流式布局FlowLayout类的常用构造函数和方法

3、FlowLayout 布局应用代码段举例 1) 设置FlowLayout 布局 JFrame fr=new JFrame( ); FlowLayout flow=new FlowLayout( ); fr.setLayout(flow); 上面的语句可以简化成: fr.setLayout(new FlowLayout()); 2) 设置框架fr为组件左对齐的FlowLayout布局 fr.setLayout(newFlowLayout(FlowLayout.LEFT)); 3) 设置框架fr为组件左对齐的FlowLayout布局,并且组件的水平间距为20像素,垂直间距为40像素。 fr.setLayout(new FlowLayout(FlowLayout.LEFT,20,40)); 实例:对齐方式 // FlowLayoutDemo.java importjavax.swing.*;

Swing常见布局管理器总结

1、BorderLayout 边界布局管理器 北区:页首(PAGE_START)north 南区:页尾(PAGE_END)south 西区:行首(LINE_START) west 东区:行尾(LINE_END)east 我们也可以在内容窗格的顶头放置工具栏,底部放置状态栏 工具栏和状态栏的高度都是不变的,但长度随框架大小而改变 这正好是边界型布局的北区、南区的特点 因此,北区和南区可以放置工具栏和状态栏,同时会根据框架的大小自动调整面板、工具栏和状态栏的大小 对于此类界面,可以将主工作区放在中间区里,辅助工具区放在周边的东、南、西、北四个区域的某一个区域中: 缺省情况下,边界型布局的各区之间没有空隙,组件彼此靠在一起 可以指定区域间的水平间隙和垂直间隙: JPanel panel = new JPanel(); panel.setLayout(new BorderLayout(5, 5)); 2、BoxLayout(盒子布局器) 它没有空构造函数,必须给出两个参数: 需要它管理的容器对象 组件排列的轴线方向,轴线方向有两种: LINE_AXIS(或者X_AXIS)表示组件按横线排成一行; PAGE_AXIS(或者Y_AXIS)表示组件按纵向排成一列 组件的对齐方式(Alignment): 对于纵向排列的组件,有3种对齐方式: btn1.setAlignmentX(Component.LEFT_ALIGNMENT); btn1.setAlignmentX(Component.CENTER_ALIGNMENT); btn1.setAlignmentX(Component.RIGHT_ALIGNMENT); 对齐方式是组件本身的性质,而不是布局管理器的性质。因此,你需要调用每个组件本身的setAlignmentX函数来设定对齐方式

AWT中常用的布局管理器

AWT中常用的布局管理器有如下几个:FlowLayout, BorderLayout, GridLayout, GridBagLayout, CardLayout,Swing还提供了一个BoxLayout。 FlowLayout从左向右排列所有组件,遇到边界就会折回下一行从新开始。它有三个构造器FlowLayout(),FlowLayout(int align)和FlowLayout(int align, int hgap, int vgap),其中的hgap和vgap代表水平间距和垂直间距,align指的是组件的排列方向(从左向右,从右向左,从中间向两边),我们可以使用FlowLayout的静态常量来设置这个参数:FlowLayout.LEFT,FlowLayout.CENTER,FlowLayout.RIGHT。 BorderLayout将容器分为EAST,SOUTH,WEST,NORTH,CENTER五个区域,如下图所示: 我们在向使用此布局管理器的容器中添加组件时,需要制定添加到的区域,否则就默认添加到中间区域里,而当我们向一个区域添加多个组件时,后放入的组件会覆盖前面的组件。BorderLayout有两个构造器,BorderLayout()和BorderLayout(int hgap,int vgap),hgap和vgap代表的水平间距和垂直间距。我们在指定组件添加到的区域时,可以使用它的静态常量:BorderLayout.EAST, BorderLayout.WEST, BorderLayout.NORTH, BorderLayout.SOUTH, BorderLayout.CENTER。例如: Frame f = new Frame(); f.setLayout(new BorderLayout(5,5)); f.add(new Button(“南”),SOUTH);//将一个按钮添加到南的位置 BorderLayout最多只能放5个组件,但是实际上我们可以先在Panel中添加多个组件,再将Panel添加到BorderLayout布局管理器中,因此我们实际可以放的组件要远远超过5个。 GridLayout将容器分割成大小相同的网格,我们在添加组件时将默认从左到右从上到下,将组件依次添加到每个网格中,而每个组件的大小也就由其所添加到的网格的大小所决定。GridLayout同样也有两个构造器,GridLayout(int rows,int cols)和GridLayout(int rows ,int cols,int hgap,int vgap),使用GridLayout的典型例子就是计算器的窗口: import java.awt.*; public class calculator {

布局管理器使用

布局管理器的使用 在前一篇中我们学习了使用资源文件为主窗口添加菜单图标。这次,我们先将菜单进行完善,然后讲解一些布局管理方面的内容。 一、完善菜单 1.新建Qt Gui应用,项目名称为myMainWindow,基类选择QMainWindow,类名为MainWindow。 2.完成后,在设计模式添加菜单项,并添加资源文件,向其中添加菜单图标。最终各个菜单如下图所示。 在Action编辑器中修改动作的对象名称、图标和快捷键,最终如下图所示。 二、向工具栏添加菜单图标

可以将动作编辑器中的动作拖动到工具栏中作为快捷图标使用,如下图所示。 可以在工具栏上点击鼠标右键来添加分隔符,如下图所示。 最终工具栏如下图所示。 三、布局管理器 1.从左边控件栏中拖入三个按钮Push Button和一个Vertical Layout(垂直布局管理器)到界面上,如下图所示。

然后将三个按钮拖入到布局管理器中,这时三个按钮就会自动垂直排列,并且进行水平拉伸,无论如何改变布局管理器的大小,按钮总是水平方向变化。如下图所示。 2.我们可以选中布局管理器,然后按下上方工具栏中的“打破布局”按钮来删除布局管理器。(当然也可以先将三个按钮移出,然后按下Delete键来删除布局管理器,如果不移出按钮,那么会将它们同时删除。)如下图所示。

3.下面我们使用分裂器(QSplitter)来进行布局,先同时选中三个按钮,然后按下上方工具栏中的“使用分裂器垂直布局”按钮,如下图所示。 然后我们进行放大,可以发现,使用分裂器按钮纵向是可以变大的,这就是分裂器和布局管理器的重要区别。如下图所示。 4.布局管理器除了可以对部件进行布局以外,还有个重要用途,就是使部件随着窗口的大小变化而变化。我们删除界面上的部件,然后拖入一个文本编辑器Text Edit部件。如下图所示。

网袋布局管理器--GridBagLayout使用介绍

网袋布局管理器--GridBagLayout使用介绍 GridBagLayout 【常用构造函数】 public GridBagLayout() 【特点】: GridBagLayout是所有AWT布局管理器当中最复杂的,同时他的功能也是最强大的.这种现象源于它所提供的众多的可配置选项,你几乎可以完全地控制容器的布局方式.尽管复杂性很明显,只要理解了基本思想,就很容易使用GridBagLayout了. GridBagLayout从它的名字中你也可以猜到,它同GridLayout一样,在容器中以网格形式来管理组件.但GridBagLayout功能要来得强大得多. 1、GridBagLayout管理的所有行和列都可以是大小不同的. 2、GridLayout把每个组件限制到一个单元格,而GridLayout并不这样:组件在容器中可以占据任意大小的矩形区域, GridBagLayout通常由一个专用类来对他布局行为进行约束,该类叫GridBagConstraints.其中的所有成员都是public的,因此要学好如何使用GridBagLayout首先要了解有那些约束变量,以及如何设置这些约束变量. 以下是GridBagConstraints的公有成员变量 public int anchor public int fill public gridheight Public gridweight public girdx public gridy public Insets insets public int ipadx public int ipady public double weightx public double weighty 看起来有很多约束需要进行设置,但事实上许多约束只需设置一次,并对多个组件重用,每次添加组件时只有少数的项需要修改. 下面是一个具有简单约束的GridBagLayout示例 public class GridBagLayoutExample2 extends JPanel { public GridBagLayoutExample2() { this.setLayout(new GridBagLayout()); this.setOpaque(true); GridBagConstraints c = new GridBagConstraints(); JButton b = new JButton ("One"); c.gridx = 0 ;

Android五大布局Layout的讲解

Android系统五大布局详解Layout 我们知道Android系统应用程序一般是由多个Activity组成,而这些Activity以视图的形式展现在我们面前,视图都是由一个一个的组件构成的。 组件就是我们常见的Button、TextEdit等等。那么我们平时看到的Android手 机中那些漂亮的界面是怎么显示出来的呢?这就要用到Android的布局管理器了,网上有人比喻的很好:布局好比是建筑里的框架,组件按照布局的要求依 次排列,就组成了用于看见的漂亮界面了。 在分析布局之前,我们首先看看控件:Android中任何可视化的控件都是 从android.veiw.View继承而来的,系统提供了两种方法来设置视图:第一种也是我们最常用的的使用XML文件来配置View的相关属性,然后在程序启动时 系统根据配置文件来创建相应的View视图。第二种是我们在代码中直接使用 相应的类来创建视图。 如何使用XML文件定义视图: 每个Android项目的源码目录下都有个res/layout目录,这个目录就是用 来存放布局文件的。布局文件一般以对应activity的名字命名,以 .xml 为后缀。在xml中为创建组件时,需要为组件指定id,如:android:id="@+id/名字"系统 会自动在gen目录下创建相应的R资源类变量。 如何在代码中使用视图: 在代码中创建每个Activity时,一般是在onCreate()方法中,调用setContentView()来加载指定的xml布局文件,然后就可以通过findViewById() 来获得在布局文件中创建的相应id的控件了,如Button等。 如: private Button btnSndMag; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(https://www.360docs.net/doc/fb9480009.html,yout.main); // 加载main.xml布局文件 btnSndMag = (Button)this.findViewById(R.id.btnSndMag); // 通过id找到 对于的Button组件 .... }

相关文档
最新文档