当前位置:文档之家› 第九讲 java容器和布局管理

第九讲 java容器和布局管理

第九讲 java容器和布局管理
第九讲 java容器和布局管理

第九讲容器和布局管理

前面我们介绍了面板容器,AWT常用的容器还有窗口、框架和对话框。其中,应用程序要想有使用AWT中的各种构件,一般要使用框架容器。

与容器相关的是布局管理器;容器没有布置它自己构件的功能,而把这个责任授权给一个布局管理器。这一讲,我们就来学习窗口容器和容器的布局管理器。

1窗口容器

AWT中提供3个用于在屏幕上显示窗口的构件:Window,Frame和Dialog。我们把它统称为窗口构件。

java.awt.Window是三个窗口构件中最基本的构件;Window构件是Frame和Dialog的父类。它没有边界,标题栏和菜单栏,而且大小不可以调整。

java.awt.Frame是Window的子类,它拥有边界与标题栏设置,而且大小允许调整,可以有菜单栏。

java.awt.Dialog也是Window的子类,它也拥有边界与标题栏设置,大小允许调整,但他不支持菜单栏;

2窗口事件

窗口构件触发窗口事件WindowEvent,它的的监听者是WindowListener,里面的接口包括:windowOpened(WindowEvent),windowClosed(WindowEvent)等,同学们可以参阅帮助文件;java.awt.event.WindowAdapter这个类实现了WindowListener接口,但里面的方法都是空的方法,我们可以选定实现WindowListener接口里的某些方法。

java.awt.Dialog有一个很有用的子类:FileDialog,它就是我们经常看到的文件对话框。通过它我们可以选定一个文件,用于装载或者保存等。

下面,我们以Frame和FileDialog为例,说明窗口构件的用法。

示例

3布局管理器

3.1布局管理器的任务

容器没有布置它自己构件的功能,而把这个责任授权给一个布局管理器。布局管理器的任务有两个:一是计算一个容器的首选尺寸和最小尺寸;二是布置容器内的构件;

每个容器只能有一个布局管理器,但一个布局管理器可以为多个容器工作;

3.2AWT的5种标准的布局管理器

AWT提供了5中标准的布局管理器,分别是:

BorderLayout 按北、东、西、南和中心位置将构件布置在容器四周和中心,可以规定构件之间的间隙。

CardLayout 从一组构件中每次显示一个构件,构件可以被换进和换出;

FlowLayout 从左到右,从上到下地显示构件

GridLayout 在网格中布置构件,每个构件都扩展以填满它的网格单元。可以规定构件之间水平和垂直间隙;

GridBagLayout 使用一组详细的网格约束条件在一个网格中安排构件;

3.3AWT的容器有默认的布局管理器,分别是:

Panel FlowLayout

Window BorderLayout

Dialog BorderLayout

Frame BorderLayout

以BorderLayout和FlowLayout为例,说明布局管理器的用法。(演示)

BorderLayout:

FlowLayout:

小结

这一讲,我们以Frame和FileDialog为例学习了容器,并学习了布局管理器。通过学习事件和布局,我们可以学习更多的构件。下一讲,我们来学习几种常用的构件——文本构件和菜单构件等。

习题

1.窗口构件有哪几种?Dialog构件一般有什么作用?

2.说明布局管理器的作用,Java提供了哪些标准的布局管理器?

Java三大布局介绍

图形用户界面(GUI)(Graphics User Interface ,GUI) 三大界面布局介绍 一、边界布局BorderLayout –介绍 边界布局BorderLayout使用 边界布局BorderLayout—注意事项 1、不是五个部分都必须添加 2、中部组件会自动的调节大小 3、JFrame,JDialog默认布局管理器就是BorderLayout 二、流式布局FlowLayout---介绍 FlowLayout布局,按组件的添加次序将按钮组件(当然也可以是别的组件)从左到右放置在容器中。当到达容器的边界时,组件将放置在下一行中,FlowLayout可以以左对齐,居中对齐,以右对齐的方式排列组件。 流式布局FlowLayout—注意事项 1、不限制他所管理的组件大小,(即:不能改变组件的大小)允许他们有最佳大小。 2、当容器被缩放时,组件的位置可能变化,但组件的大小不变。 3、默认组件是居中对齐,可以通过FlowLayout(int align)函数,来指定对齐方式。 三、网格布局GridLayout—介绍

GridLayout布局,听其名而知其意,它将容器分割成多行多列,组件被填充到网络中,添加到容器中的组件首先放置在左上角的网格中,然后从左到右放置其它的组件,当占满该行的所有网格后,接着继续在下一行从左到右放置组件。 网络布局GridLayout---注意事项 1、组件的相对位置不随容器缩放而变化,但大小会变化。 2、所有组件的大小相同。 3、可以通过GridLayout(int rows,int cols,int hgap,int vgap)来指定网络的 行/列,水平间隙/垂直间隙。 参数说明:rows - 该 rows 具有表示任意行数的值零 cols - 该 cols 具有表示任意列数的值零 hgap - 水平间距 vgap - 垂直间距 开发GUI程序一般步骤: 1、引包 import java.awt.*; import javax.swing.*; 2、继承JFrame public class Demo3 extends JFrame {} 3、定义需要的组件 //3.定义组件 JButton jb1,jb2,jb3,jb4,jb5; int size=9; JButton jbs[]=new JButton[size]; //先分配初始空间 4、创建组件 //4.创建组件 jb1=new JButton("中部"); //创建组件 for(int i=0;i

Java布局管理器setLayout() 华清课设

Java布局管理器setLayout() 2008-02-17 19:22 1。FlowLayout public FlowLayout(int align,int hgap,int vgap) 创建一个新的流布局管理器,具有指定的对齐方式以及指定的水平和垂直间隙。 对齐参数的值必须是以下之一:FlowLayout.LEFT、FlowLayout.RIGHT、FlowLayout.CENTER、FlowLayout.LEADING 或FlowLayout.TRAILING。 参数: align - 对齐值 hgap - 组件之间以及组件与Container 的边之间的水平间隙 vgap - 组件之间以及组件与Container 的边之间的垂直间隙 2GridLayout public GridLayout(int rows, int cols, int hgap, int vgap)创建具有指定行数和列数的网格布局。给布局中的所有组件分配相等的大小。 此外,将水平和垂直间距设置为指定值。水平间距将置于列与列之间。将垂直间距将置于行与行之间。 rows 和cols 中的一个可以为零(但不能两者同时为零),这表示可以将任何数目的对象置于行或列中。 所有GridLayout 构造方法都服从这一规定。 参数: rows - 该rows 具有表示任意行数的值零 cols - 该cols 具有表示任意列数的值零 hgap - 水平间距 vgap - 垂直间距 3,BorderLayout public BorderLayout(int hgap, int vgap)用指定的组件之间的水平间距构造一个边界布局。水平间距由hgap 指定,而垂直间距由vgap 指定。 参数: hgap - 水平间距。 vgap - 垂直间距。

java swing布局管理器

学籍管理系统 Java Swing布局管理器 科尔沁艺术职业学院计算机科学与技术系2008级(普理)班曹容赫 指导教师苏春源 摘要:院校规模不断扩大,学生数量不断增多,原来的人工记录的方式,甚至是一般的数据存储管理软件不能满足学生管理的需求。传统管理方式维护数据性能低、查询信息不方便、选课效率低、维护成绩信息的工作量大,为弥补以上缺陷,便于信息管理与维护,提高管理效率,从而开发此学籍管理系统,以实现学院的信息化管理。 关键词Java.*Swing 用户名管理 Kerqin Art Institute of evaluating teaching career system Kerqin Art Vocational College, Department of Computer Science and Technology 2008 (2)Cao ronghe Abstract:The institutions have been expanding, increasing the number of students, the original way of manual records, or even a general data storage management software can not meet the management needs of students. Performance of the traditional low-maintenance data management, query information is not convenient, course selection, low efficiency, heavy workload to maintain performance information for more than make up for deficiencies, facilitate information management and maintenance, and improve management efficiency, in order to develop the school management system to achieve School of Information Management. Key words java*swing The user's name manages 引言 为了学院更方便的管理各院系开设的课程,让学生更方便地选课并及时了解个人课程及成绩信息,同时提高学院的信息化水平,学籍管理系统对成绩管理、学籍管理、班级管理、课程设置、选课信息等几个方面进行管理,真正实现管理信息化,且弥补了过去传统的数据信息管理的低效率问题。 1、需求分析 经过讨论此系统的开发是有必要的,针对此系统的使用群体有学生、家长、教师等。此系统可以根据相应信息对学生信息进行更有效的管理。还应用了Java *Swing 来编写主体布局界面,使操作更简单、更实用。

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演示*

三十三、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(); } } 程序运行结果如下:

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 布局管理和 java的事件

Java 实验日志 指导教师实验时间:2010 年月日学院计算机专业计算机科学与技术 班级3110802 学号08600201 姓名张梦实验室S 实验题目: Java 布局管理和 java的事件 实验目的: 1. 掌握 Java语言中几种布局管理器。 2. 能熟练综合运用这几种布局管理器设计复杂的图形界面。 3. 理解事件的概念。 4. 能熟练使用 Java 提供的事件处理方法,进行符合要求的事件处理 实验要求: 结合多种布局管理器设计一个复杂的图形界面。 掌握 Java提供的各种事件接口,并能灵活使用。 实验主要步骤: 1.用BorderLayout和GridLayout布局管理器设计一个如下图所示的图形界 面: 2.在记事本编辑如下源程序: import java.awt.*; public class Ex9_1 { private Frame demoframe; private Button b1; private Button b2; private Button b3; private Button b4; private Panel cpanel; private Button b[]; public void Init() { demoframe =new Frame("布局管理器"); b1 =new Button("确定");

demoframe.add(b1,"East"); b2 =new Button("取消"); demoframe.add(b2,"West"); b3 =new Button("Hello,"); demoframe.add(b3,"North"); b4 =new Button("Java!......"); demoframe.add(b4,"South"); cpanel =new Panel(); cpanel.setLayout(new GridLayout(3,3,7,7)); demoframe.add(cpanel,"Center"); b =new Button[9]; for(int i=0;i<9;i++) { b[i] =new Button(); b[i].setSize(50,50); b[i].setLabel(Integer.toString(i)); cpanel.add(b[i]); } demoframe.pack(); demoframe.setVisible(true); } public static void main(String[] args) { Ex9_1 demo =new Ex9_1(); demo.Init(); } } 3.保存程序Ex9_1.java,编译运行程序。理解BorderLayout和GridLayout 布局管理器的用法。 运行结果: 实验结果: 运行结果: 4.结合上述例子,试编写如下图所示的图形界面:

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):显示最后一张卡片。

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

java.awt 类 GridBagLayout https://www.doczj.com/doc/c113363378.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

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.设计一个简单计算器,如下图所示。在“操作数”标签右侧的两个文本框输入操作数,当单击操作符+,-,×,÷按钮时,对两个操作数进行运算并将

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.*;

Java盒式布局的新用法示例代码

package com.hy.yd; import java.awt.Color; import java.awt.FlowLayout; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.SwingConstants; public class GuiLayoutExample { public static void main(String[] args){ MainFrame mf=new MainFrame("用户登录界面"); } } class MainFrame extends JFrame{ public MainFrame(String str){ this.setTitle(str); this.setSize(320,240); this.setLayout(new FlowLayout()); //Box类是借助于BoxLayout管理器创建单行或单列组件的一个特殊容器 Box boxTitle,box1,box2,box3,boxBase,boxMain; boxBase=Box.createHorizontalBox();//boxBase容器按照水平方向排列组件 boxMain=Box.createVerticalBox();//boxMain容器按照垂直方向排列组件 boxTitle=Box.createHorizontalBox();////boxTitle容器按照水平方向排列组件 box1=Box.createVerticalBox();////box1容器按照垂直方向排列组件 box1.add(new JLabel("name"));//box中加入标签name; box1.add(Box.createVerticalStrut(8));//box1标签name下加入8个点的空白间距box1.add(new JLabel("sex"));//box中加入标签sex; box1.add(Box.createVerticalStrut(8));//box1标签sex下加入8个点的空白间距box1.add(new JLabel("age"));//box中加入标签age; box2=Box.createVerticalBox();//box2容器按照垂直方向排列组件 box2.add(new JTextField(10));//box2中加入文本框 box2.add(Box.createVerticalStrut(8));//box2中在文本框下加入8个点的空白间距box2.add(new JTextField(10));//box2中加入文本框 box2.add(Box.createVerticalStrut(8));//box2中在文本框下加入8个点的空白间距box2.add(new JTextField(10));//box2中加入文本框 box3=Box.createHorizontalBox();//box3容器按水平方向排列组件 box3.add(new JButton("登录"));//box3中加入登录按钮 box3.add(Box.createHorizontalStrut(15));//box3在按钮右边加入15个点的空白box3.add(new JButton("重写"));//box3中加入重写按钮 boxBase.add(box1);//boxBase容器中加入box1

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函数来设定对齐方式

java_图形界面_布局管理_边界布局_JFrame

* 显示一个经过边界布局的窗口,理解图形界面 * 布局管理器 * JFrame * BorderLayout * 边界布局 */ package com.test1; //package com.GUI; import java.awt.*; import javax.swing.*; public class Demo8_2 extends JFrame //继承JFrame,顶层容器{ JButton jb1,jb2,jb3,jb4,jb5;//声明JButton ,一种容器类组件 public static void main(String[] args) { Demo8_2 demo8_2=new Demo8_2(); //实例化一个类对象 } public Demo8_2() //构造函数

//创建JButton jb1=new JButton("中部"); jb2=new JButton("北部"); jb3=new JButton("东部"); jb4=new JButton("南部"); jb5=new JButton("西部"); //添加各个组件,把JButton加入JFrame对象 this.add(jb1,BorderLayout.CENTER); this.add(jb2,BorderLayout.NORTH); this.add(jb3,BorderLayout.EAST); this.add(jb4,BorderLayout.SOUTH); this.add(jb5,BorderLayout.WEST); //设置窗体属性 this.setTitle("边界布局");//标题 this.setSize(400,300); //窗体大小 this.setLocation(300,200);//窗体坐标 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口默认推出程序 //显示窗体 this.setVisible(true); } }

第九讲 java容器和布局管理

第九讲容器和布局管理 前面我们介绍了面板容器,AWT常用的容器还有窗口、框架和对话框。其中,应用程序要想有使用AWT中的各种构件,一般要使用框架容器。 与容器相关的是布局管理器;容器没有布置它自己构件的功能,而把这个责任授权给一个布局管理器。这一讲,我们就来学习窗口容器和容器的布局管理器。 1窗口容器 AWT中提供3个用于在屏幕上显示窗口的构件:Window,Frame和Dialog。我们把它统称为窗口构件。 java.awt.Window是三个窗口构件中最基本的构件;Window构件是Frame和Dialog的父类。它没有边界,标题栏和菜单栏,而且大小不可以调整。 java.awt.Frame是Window的子类,它拥有边界与标题栏设置,而且大小允许调整,可以有菜单栏。 java.awt.Dialog也是Window的子类,它也拥有边界与标题栏设置,大小允许调整,但他不支持菜单栏; 2窗口事件 窗口构件触发窗口事件WindowEvent,它的的监听者是WindowListener,里面的接口包括:windowOpened(WindowEvent),windowClosed(WindowEvent)等,同学们可以参阅帮助文件;java.awt.event.WindowAdapter这个类实现了WindowListener接口,但里面的方法都是空的方法,我们可以选定实现WindowListener接口里的某些方法。 java.awt.Dialog有一个很有用的子类:FileDialog,它就是我们经常看到的文件对话框。通过它我们可以选定一个文件,用于装载或者保存等。 下面,我们以Frame和FileDialog为例,说明窗口构件的用法。 示例 3布局管理器 3.1布局管理器的任务 容器没有布置它自己构件的功能,而把这个责任授权给一个布局管理器。布局管理器的任务有两个:一是计算一个容器的首选尺寸和最小尺寸;二是布置容器内的构件; 每个容器只能有一个布局管理器,但一个布局管理器可以为多个容器工作; 3.2AWT的5种标准的布局管理器 AWT提供了5中标准的布局管理器,分别是: BorderLayout 按北、东、西、南和中心位置将构件布置在容器四周和中心,可以规定构件之间的间隙。 CardLayout 从一组构件中每次显示一个构件,构件可以被换进和换出; FlowLayout 从左到右,从上到下地显示构件 GridLayout 在网格中布置构件,每个构件都扩展以填满它的网格单元。可以规定构件之间水平和垂直间隙; GridBagLayout 使用一组详细的网格约束条件在一个网格中安排构件; 3.3AWT的容器有默认的布局管理器,分别是: Panel FlowLayout Window BorderLayout Dialog BorderLayout

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 {

相关主题
文本预览
相关文档 最新文档