第7章 Java GUI图形用户界面应用程序设计Word下载.docx

上传人:b****6 文档编号:20332706 上传时间:2023-01-22 格式:DOCX 页数:126 大小:498.68KB
下载 相关 举报
第7章 Java GUI图形用户界面应用程序设计Word下载.docx_第1页
第1页 / 共126页
第7章 Java GUI图形用户界面应用程序设计Word下载.docx_第2页
第2页 / 共126页
第7章 Java GUI图形用户界面应用程序设计Word下载.docx_第3页
第3页 / 共126页
第7章 Java GUI图形用户界面应用程序设计Word下载.docx_第4页
第4页 / 共126页
第7章 Java GUI图形用户界面应用程序设计Word下载.docx_第5页
第5页 / 共126页
点击查看更多>>
下载资源
资源描述

第7章 Java GUI图形用户界面应用程序设计Word下载.docx

《第7章 Java GUI图形用户界面应用程序设计Word下载.docx》由会员分享,可在线阅读,更多相关《第7章 Java GUI图形用户界面应用程序设计Word下载.docx(126页珍藏版)》请在冰豆网上搜索。

第7章 Java GUI图形用户界面应用程序设计Word下载.docx

 

(1)组件—图形用户界面的各种元素称为组件Component,它是一个图形化方式显示在屏幕上与用户交户的对象,组件分容器类(Container)和非容器类组件,容器类组件可包含其它组件,也可以是其它容器。

非容器类组件不包含其它组件,提供人机交互如按钮类Button﹑标签类Label﹑TextComponent-文本类.

(2)容器—用来组织其它界面元素的单元,如窗口包含许多界面成分和元素,这些界面元素本身又可以是容器,这个容器再进一步包含它的界面成分和元素依此类推,形成复杂图形用户界面。

容器类分顶层容器和非顶层容器两类:

顶层容器可以是独立窗口,顶层容器类是Window其常用的子类为Frame-窗口(框架)类﹑Dialog-对话框类,这两个类带有边框﹑可移动﹑放大﹑缩小和关闭功能.非顶层容器必须位于某个顶层容器窗口之内,不能独立存在。

面板类属非顶层容器类如:

Scollpane滚动面板子类,Applet面板子类,都是无边框的容器类.容器特点:

1.容器有一定范围:

一般为矩形边界有边框,有些无可见标记。

2.容器有一定位置:

位置可是屏幕四角的绝对位置,也可是相对其它容器的相对位置

3.容器有一个背景:

背景覆盖全部容器,可透明,也可以指定一幅图案,使界面生动活泼。

4.容器包含许多界面成分和元素:

容器打开显示时,其上面的所有成分和元素被显示出来,关闭时被隐藏。

5.容器可按一定的物理规则排列它元素的相对位置和前后排列关系。

容器是Component组件的子类,具有组件的所有性质,因此也是组件。

Component类中定义了各种GUI组件对象所需的属性和方法。

容器类对象可使用父类Component中的add()方法添加组件。

Java中GUI容器类层次关系图:

容器包含两个抽象类:

Window类和Panel类,Window类可自由停泊在顶层窗口,Panel类为可容纳其它组件的非顶层容器,它不能独立存在,必须被添加到其它容器中,如Window或Applet容器,向容器中添加组件用add()方法,删除容器中的组件用removeAll()方法或remove(Componentc)方法,为保正在容器中正常显示组件,应调用validate()方法.

Java组件在容器中的位置和尺寸由布局管理器决定,人工控制组件在容器中的位置和尺寸,可取消布局管理器,使用如下方法:

publicsetLocation(intx,inty)–设置(移动)当前组件到一个新位置坐标点。

publicsetSize(intwidth,intheight)–设置组件大小。

publicsetBounds(intx,inty,intwidth,intheight)–设置窗口在屏幕显示位置为距屏幕左面x像素,距上方y像素,宽度和高度。

抽象Window类不能实例化,因此在子类Frame-框架类中实现

1.Frame类的特点

(1)Frame类是抽象类Window的子类。

(2)Frame对象显示一个带标题和尺寸重置角标的窗口。

(3)默认为不可见。

设置setVisible(ture)为可视。

(4)默认布局管理器是BorderLayout(边界布局管理器),可使用setLayout()方法改变其默认布局管理器,Frame类的层次关系如图:

java.lang.Object

 ├─java.awt.Component

 ├─java.awt.Container

 ├─java.awt.Window

 └─java.awt.Frame

例7-1TestFrame.java–框架窗口应用

importjava.awt.*;

publicclassTestFrame{

publicstaticvoidmain(Stringargs[]){

//创建标题为MyFrameTest的框架窗口容器对象实例

Framef=newFrame("

MyFrameTest"

);

f.setSize(170,100);

//设置Frame组件窗口大小(宽﹑高)

f.setBackground(Color.blue);

//设置Frame组件背景色为蓝色

f.setVisible(true);

//设置Frame组件为可视

}

}

编译为.class文件用JCreator执行

2.Panel面板类的特点

(1)Panel类是非顶层容器它不能独立存在,必须被添加到其它容器中,如Window或Applet

(2)Panel类可容纳其它组件,在程序中用于布局和定位。

(3)可用所在容器的不同布局管理器布局。

(4)默认布局管理器为FlowLayout(流布局管理器),可使用setLayout()方法改变其默认布局管理器。

Panel类的层次关系如图:

  └─java.awt.Panel

例7-2TestFrameWithPanel.java–面板类的应用(面板类的默认布局管理器为FlowLayout布局)

publicclassTestFrameWithPanel{

publicstaticvoidmain(Stringargs[]){

MyFrameWithPanelTest"

//创建带标题的窗口容器组件对象实例

Panelpan=newPanel();

//在窗口容器上创建面板容器对象

f.setSize(180,100);

//设置Frame组件窗口大小(宽﹑高)

f.setBackground(Color.blue);

f.setLayout(null);

//取消布局管理器(可同时看到窗口和面板组件)

pan.setSize(100,60);

//设置面板容器大小(宽﹑高)

pan.setBackground(Color.green);

//设置面板容器组件背景色为绿色

f.add(pan);

//在窗口容器组件中添加面板容器对象

f.setVisible(true);

2-1.ScrollPane类

是Container类的子类,因此也是一个容器称为滚动面板,经常将组件放到面板中,然后再添加到滚动面板中显示。

ScrollPane有2个构造方法:

(1)ScrollPane()-创建滚动面板,滚动条初始不可见,当组件范围大于滚动面板时,滚动条自动产生。

(2)ScrollPane(inta)-参数a指定滚动条的初始状态,有3个值。

ScrollPane.SCROLLBARS_ALWAYS-总是带滚动条

ScrollPane.SCROLLBARS_AS_NEEDED–滚动条作为需要的

ScrollPane.SCROLLBARS_NEVER-不需要滚动条

【例7.11】-Example7_11.java流布局

importjava.awt.event.*;

classWindoTenextendsFrameimplementsActionListener{

Panelp;

//声明面板容器对象

ScrollPanescrollpane;

//声明滚动条面板容器对象

WindoTen(){//窗口构造函数

setLayout(newFlowLayout());

//设为流布局

p=newPanel();

//创建面板容器对象

scrollpane=newScrollPane(ScrollPane.SCROLLBARS_ALWAYS);

//创建滚动条面板容器对象

p.add(newButton("

one"

));

//添加4个按钮到面板容器对象中

two"

three"

four"

scrollpane.add(p);

//将面板容器对象添加到滚动条面板容器对象中

add(scrollpane);

//将滚动条面板容器添加到窗口容器中

setBounds(60,60,200,200);

//设置窗口在屏幕显示位置为距屏幕左面60像素,距上方60像素,宽高各为200

setVisible(true);

//设置窗口可见

validate();

//添加组件时调用validate()生效方法,保证组件在容器中正确显示

publicvoidactionPerformed(ActionEvente){System.exit(0);

publicclassExample7_11{

publicstaticvoidmain(Stringargs[]){

newWindoTen();

//创建窗口对象并调用构造函数

7.1.2布局管理器

为生成具有良好与平台无关性的图形用户界面,Java中提供了布局管理器工具(ContainerLayouts)来管理组件在容器中的布局,而不手动设置组件位置和大小。

每个容器都有一个布局管理器,当容器需对组件定位或判断大小尺寸时,就会调用其对应的布局管理器。

Java语言目前提供有FlowLayout,BorderLayout,GridLayout,BoxLayout,CardLayout,GridBagLayout等布局管理器。

(1)FlowLayout(流布局管理器)

FlowLayout流布局管理器是Panel类的默认容器布局管理器。

FlowLayout布局对组件逐行定位,行内从左到右,一行排满后换行,默认对齐为居中对齐。

不改变组件的大小,按组件原有尺寸显示组件,可在构造方法中设置不同的组件间距,行距及对齐方式。

FlowLayout的构造方法

newFlowLayout(FlowLayout.RIGHT,20,40);

//右对齐,组件之间水平间距20个像素,竖直间距40个像素。

newFlowLayout(FlowLayout.LEFT);

//左对齐,水平间距和竖直间距为默认5个像素。

newFlowLayout();

//居中对齐,水平间距和竖直间距为默认5个像素。

例7-3TestFlowLayout.java-流布局应用

publicclassTestFlowLayout{

FlowLayout"

//创建带标题的窗口容器组件对象实例

Buttonbutton1=newButton("

Ok"

//创建3个按钮组件对象

Buttonbutton2=newButton("

Open"

Buttonbutton3=newButton("

Close"

//窗口设置为流布局管理器:

居中对齐,水平间距和竖直间距为默认5个像素(),注意:

Frame默认是BorderLayout(边界布局管理器).

f.setLayout(newFlowLayout());

//创建居中对齐的流布局对象并将窗口设置为流布局

f.add(button1);

//将3个按钮添加到容器f中

f.add(button2);

f.add(button3);

f.setSize(100,100);

//设置窗口(框架)容器大小

//设置窗口容器为可视

(2)BorderLayout(边界布局管理器)

BorderLayout(边界布局管理器)将整个容器的布局划分成东﹑南﹑西﹑北﹑中五个区域,组件只能被添加到指定的区域﹑每个区域只能加入一个组件,后加入的组件会代替前组件,不指定组件区域默认放在Center区域。

BorderLayout边界布局容器尺寸缩放原则:

南﹑北区域在水平方向缩放

东﹑西区域在垂直方向缩放

中部区域在两个平方向缩放

布局为:

例7-4TestBorderLayout.java-边界布局管理器应用-Frame默认是BorderLayout(边界布局管理器).

publicclassTestBorderLayout{

Framef;

f=newFrame("

BorderLayout"

//创建Frame窗口容器

Buttonbn=newButton("

BN"

//创建5个对应按钮

Buttonbs=newButton("

BS"

Buttonbw=newButton("

BW"

Buttonbe=newButton("

BE"

Buttonbc=newButton("

BC"

f.add(bn,"

North"

//添加五个组件按钮添加到窗口容器f中的边界布局东﹑南﹑西﹑北﹑中

f.add(bs,"

South"

f.add(bw,"

West"

f.add(be,"

East"

f.add(bc,"

Center"

f.setSize(200,200);

//设置窗口容器尺寸

f.setVisible(true);

//设置窗口容器可视

(3)GridLayout(网(栅)格布局管理器)

GridLayout(网(栅)格布局管理器)将布局划分为矩形网格,每个单元格区域大小相等。

组件被添加到每个单元格中,先从左到右添满换行,再从上到下:

在GridLayout()构造方法中指定分隔的行列数,如:

NewGridLayout(3,4);

//创建3行4例的网格布局

例7-5TestGridLayout.java-网格布局管理器应用

publicclassTestGridLayout{

GridLayoutExample"

Buttonb1=newButton("

b1"

//创建6个按钮

Buttonb2=newButton("

b2"

Buttonb3=newButton("

b3"

Buttonb4=newButton("

b4"

Buttonb5=newButton("

b5"

Buttonb6=newButton("

b6"

f.setLayout(newGridLayout(3,2));

//设置窗口容器布局为3行2例的网格布局

f.add(b1);

f.add(b2);

//将6个按钮添加到窗口3行2例网格布局中去

f.add(b3);

f.add(b4);

f.add(b5);

f.add(b6);

f.pack();

//设置窗口容器为紧凑格式

f.setVisible(true);

//设置窗口容器可视

【例7.15】Example7_15.java-网格布局

classWinGridextendsFrame

{GridLayoutgrid;

//声明网格布局对象

WinGrid()//构造方法

{grid=newGridLayout(12,12);

//创建12行列网格布局对象

setLayout(grid);

//设置布局为网格布局

Labellabel[][]=newLabel[12][12];

//创建一个标签类的12行列的二维数组label

for(inti=0;

i<

12;

i++)//外层循环输出行i

{for(intj=0;

j<

j++)//内层循环输出行列j

{label[i][j]=newLabel();

//创建标签对象存入二维数组

if((i+j)%2==0)//如果行列下标之和能被2整除

label[i][j].setBackground(Color.black);

//设置标签对象颜色为黑色

else//否则

label[i][j].setBackground(Color.white);

//设置标签对象颜色为白色

add(label[i][j]);

//添加标签对象到窗口容器中

//设置窗口在屏幕显示位置为距屏幕左面10像素,距上方10像素,宽高各为260

setBounds(10,10,260,260);

setVisible(true);

//设置窗口及标签对象可视

validate();

publicclassExample7_15

{publicstaticvoidmain(Stringargs[])

{newWinGrid();

(4)BoxLayout–盒式布局管理器

BoxLayout在java.swing.border包中,也是Container类中的一个子类,因此为盒式容器。

构造方法:

BoxLayout(Containercon,intaxis)

con-容器对象

axis的值有:

(1)BoxLayout.X_AXIS–行型布局

(2)BoxLayout.Y_AXIS–列型布局。

组件加入的顺序是从左(上)到右(下)排列,容器的两端为剩余空间。

与FlowLayout流布局局不同的是,它仅有一行(列),无论组件多少只排列在该行(列)中,因此组件可能被压缩变形。

【例7.16】Example7_16.java布局

importjavax.swing.*;

//引入swing.*

importjavax.swing.border.*;

publicclassExample7_16

{newWindowBox();

//创建窗口对象并调用构造方法

classWindowBoxextendsFrame//声明WindowBox子类继承Frame类

{BoxbaseBox,boxV1,boxV2;

//声明行型盒式布局容器对象baseBox,列型盒式布局容器对象boxV1,boxV2引用变量

WindowBox()//构造方法

{boxV1=Box.createVerticalBox();

//使用Box类的静态方法获得一个列型盒式布局容器对象boxV1

boxV1.add(newLabel("

姓名"

//在容器中添加姓名标签组件

boxV1.add(Box.createVerticalStrut(8));

//在容器中添加垂直支撑高度为8(控制组件间的垂直距离),宽度为0

email"

//在容器中添加email标签组件

//在容器中添加垂直支撑高度为8,宽度为0

职业"

//在容器中添加职业标签组件

boxV2=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 笔试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1