AWT编程学习笔记原创 含简略代码Word下载.docx

上传人:b****5 文档编号:17367199 上传时间:2022-12-01 格式:DOCX 页数:63 大小:260.54KB
下载 相关 举报
AWT编程学习笔记原创 含简略代码Word下载.docx_第1页
第1页 / 共63页
AWT编程学习笔记原创 含简略代码Word下载.docx_第2页
第2页 / 共63页
AWT编程学习笔记原创 含简略代码Word下载.docx_第3页
第3页 / 共63页
AWT编程学习笔记原创 含简略代码Word下载.docx_第4页
第4页 / 共63页
AWT编程学习笔记原创 含简略代码Word下载.docx_第5页
第5页 / 共63页
点击查看更多>>
下载资源
资源描述

AWT编程学习笔记原创 含简略代码Word下载.docx

《AWT编程学习笔记原创 含简略代码Word下载.docx》由会员分享,可在线阅读,更多相关《AWT编程学习笔记原创 含简略代码Word下载.docx(63页珍藏版)》请在冰豆网上搜索。

AWT编程学习笔记原创 含简略代码Word下载.docx

ScrollPane:

增加滚动条

Frame:

常见的窗口

Dialog:

对话框

例子:

importjava.awt.Frame;

publicclassTestFrame{

publicstaticvoidmain(String[]args){

Framef=newFrame("

测试窗口"

);

//设置窗口的大小,位置

f.setBounds(50,100,400,300);

//设置窗口的可见性,默认是隐藏的

f.setVisible(true);

}

}

运行上面的程序,显示了一个简单的窗口

2.2Panel

Panel容器具有以下几个特点:

●可作为容器来盛装其他组件,为放置组件提供空间

●不能单独存在,必须依附于其他容器

●默认使用FlowLayout作为布局管理器

下面的例子使用Panel作为容器来盛装一个文本框和按钮

importjava.awt.Button;

importjava.awt.Panel;

importjava.awt.TextField;

publicclassTestPanel{

Framef=newFrame();

//创建一个Panel容器

Panelp=newPanel();

//给Panel容器中添加组件

p.add(newTextField(20));

p.add(newButton("

按钮"

));

//将Panel添加到Frame窗口中

f.add(p);

f.setBounds(50,100,300,400);

运行之后我们会看到这么一个窗口:

2.3ScrollPane

ScrollPane是一个带滚动条的容器,不能独立存在。

ScrollPane具有以下特点:

●可以作为容器来盛装其他组件,当组件占用空间过大时会自动产生滚动条。

●不能单独存在

●默认使用BorderLayout作为布局管理器

我们看一个简单的例子:

importjava.awt.ScrollPane;

publicclassTestScrollPane{

//创建一个ScrollPane容器,指定总是显示滚动条

ScrollPanesp=newScrollPane(ScrollPane.SCROLLBARS_ALWAYS);

//为ScrollPane容器添加组件

sp.add(newTextField(20));

sp.add(newButton("

f.add(sp);

f.pack();

运行上面的程序我们会看到如下的结果:

3.布局管理器

为了使生成的图形用户界面具有良好的与平台无关性,java语言中,提供了布局管理器来管理组件在容器中的布局,而不使用直接设置的位置和大小。

AWT提供了FlowLayout,BorderLayout,GridLayout,GridBigLayout,CardLayout五个常用的布局管理器。

3.1FlowLayout布局管理器

在FlowLayout布局管理器中,组件像流水一样向某个方向流动(排列),遇到边界就折回。

FlowLayout有如下三个构造器

●FlowLayout();

使用默认的排序方式,默认垂直,水平创建FlowLayout布局管理器

●FlowLayout(intalign)使用指定的对齐方式。

●FlowLayout(intalign,inthgap,intvgap)使用指定的对齐方式,指定水平,垂直,水平间距,创建FlowLayout布局管理器

Hgap,vgap代表水平,垂直间距

我们来看下边的例子:

importjava.awt.FlowLayout;

publicclassTestFlowLayout{

//设置Frame容器使用FlowLayout布局管理器

f.setLayout(newFlowLayout(FlowLayout.LEFT,20,5));

//向窗口中添加按钮

for(inti=0;

i<

20;

i++)

{

f.add(newButton("

+i));

}

运行上边的代码我们会看到如下结果:

3.2BorderLayout布局管理器

BorderLayout布局管理器将容器分为WAST,SOUTH,WEST,NORTH,CENTER五个区域。

使用BorderLayout时需要注意两点:

1.向使用BorderLayout布局管理器的容器中添加组件时,如果没指定哪个区域,则默认为中间

2.如果向同一区域添加组件时,前边的会被后边的覆盖

BorderLayout布局管理器有如下两个构造器

●BorderLayout();

使用默认水平,垂直间距来创建布局管理器

●BorderLayout(inthagp,intvagp);

使用指定的水平,垂直间距来创建布局管理器。

importjava.awt.BorderLayout;

importjavax.swing.border.Border;

publicclassTestBorderLayout{

f.setLayout(newBorderLayout(30,5));

f.add(newButton("

北"

),BorderLayout.SOUTH);

西"

),BorderLayout.WEST);

南"

),BorderLayout.NORTH);

东"

),BorderLayout.EAST);

中"

运行结果:

3.3GirdLayout布局管理器

GridLayout布局管理器将容器分割成纵横线分割的网络,每个网格所占的区域大小不同,往使用GirdLayout的容器中添加组件时,默认从左向右,从上往下。

GridLayout有如下两个构造器

●GirdLayout(introws,intcols);

采用指定的行数,列数,默认横向间距,纵向间距将容器分割成多个网络

●GridLayout((introws,intcols,inthagp,intvagp);

我们用GridLayout和BorderLayout开发一个计算器的界面:

importjava.awt.GridLayout;

publicclassTestGridLayout{

Framef=newFrame();

Panelp1=newPanel();

p1.add(newTextField(30));

f.add(p1,BorderLayout.NORTH);

//设置Panel使用GridLayout布局

Panelp2=newPanel();

p2.setLayout(newGridLayout(3,5,4,4));

String[]name={"

0"

"

1"

2"

3"

4"

5"

6"

7"

8"

9"

"

+"

-"

*"

/"

."

};

//向Panel2中添加按钮

for(Stringn:

name)

p2.add(newButton(n));

f.add(p2);

运行后我们看到这么一个简单的计算器界面

3.3GridBagLayout布局管理器

GirdBagLayout布局管理器功能最强大。

但也是最复杂的。

于GridLayout布局管理器不同的,一个组件可以跨越多个网格。

并可以设置网格的大小,从而增加了布局的灵活性

使用GridBagLayout布局管理的步骤如下:

●创建GridBagLayout布局管理器,并指定GUI容器使用该布局,代码如下:

GridBagLayoutgb=newGridBagLayout();

Constainer.setLayout(gb);

●创建GridBagLayout对象,并设置该对象的相关属性,代码如下:

gbc,gridx=2;

//设置受该对象控制的GUI组件位于网格的横向索引

gbc,gridy=2;

//设置受该对象控制的GUI组件位于网格的纵向索引

gbc,gridwidth=2;

//设置受该对象控制的GUI组件位横跨多少网格

//设置受该对象控制的GUI组件位纵跨多少网格

●调用GridBagLayout对象的方法来建立GridBagConstainer对象和受控组件之间的关联,代码如下:

gb.setConstainer(c,gbc);

//设置c组件受gbc对象控制

●添加组件

Constainer.add(c);

使用GridBagLayout布局管理器的关键在于GridBagConstainer,他才是精确控制某个GUI组件的核心,该类有如下几个方法:

●Gridxgridy设置受该对象控制的GUI组件的左上角所在的横向索引,纵向索引。

●Gridwidthgridheight设置受该对象控制的GUI组件横向,纵向跨越了多少个网格

●Fill:

设置受该对象控制的GUI组件如何占领空白区域。

●Ipadx、ipady:

设置受该对象控制的GUI组件横向,纵向的内部填充大小,即在该组件的最小尺寸的基础上还需要增加多大。

●Insets:

何止受该对象控制的GUI组件的外部填充大小,即组件边界于显示区域边界之间的距离

●Anchor:

设置受该对象GUI组件在其显示区域之中的定位方式。

●Weightx,weighty:

设置受该对象控制的GUI组件占领多余空间的水平,垂直增加比例。

默认值都是0,即不占用多余空间

3.4CardLayout

CardLayout布局管理器以时间而非空间来管理组件,他将加入容器的组件看成一叠卡片,每次只有最上边的Commponent才可以显示。

CardLayout提供了如下两个构造器:

●CardLayout():

创建默认的CardLayout布局管理器

●CardLayout(inthgap,intvgap):

通过指定卡片于容器边界的距离,来创建CardLayout布局管理器

CardLayout用于控制组件可见的5个方法:

●First(Canstainertarget):

显示target容器中的第一张卡片

●Last(Canstainertarget):

显示target容器中的最后一张卡片

●Previous(Canstainertarget):

显示target容器中前一张卡片

●Next(Canstainertarget):

显示target容器中下一张卡片

●Show(Canstainertarget,Stringname):

显示target容器中指定卡片的名字

如下的例子程序示范了CardLayout布局管理器的用法:

publicclassTestCardLayout{

Framef=newFrame();

String[]name={"

第一张"

第二张"

第三张"

第四张"

第五张"

Panelp=newPanel();

CardLayoutc=newCardLayout();

publicvoidinit(){

p.setLayout(c);

for(inti=0;

i<

name.length;

i++){

p.add(name[i],newButton(name[i]));

//控制显示上一张的按钮

Buttonprevious=newButton("

上一张"

previous.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

c.previous(p);

//显示容器里的钱一张卡片

}

});

//控制显示下一张的按钮

Buttonnext=newButton("

下一张"

next.addActionListener(newActionListener(){

c.next(p);

//控制显示第一张的按钮

Buttonfirst=newButton("

first.addActionListener(newActionListener(){

c.first(p);

//控制显示最后一张的按钮

Buttonlast=newButton("

最后一张"

last.addActionListener(newActionListener(){

c.last(p);

//控制显示第三章的按钮

Buttonthird=newButton("

third.addActionListener(newActionListener(){

c.show(p,"

p2.add(previous);

p2.add(last);

p2.add(first);

p2.add(next);

p2.add(third);

f.add(p2,BorderLayout.SOUTH);

newTestCardLayout().init();

运行结果如下:

绝对定位:

Java可以对GUI组件进行绝对定位,在java中采用绝对定位的步骤如下:

●将Container的布局管理器设置车改null:

setLayout(null);

●往容器中添加组件时,先调用setBounds()或setSize()的方法来设置组件的大小,位置。

或直接创建GUI组件时通过构造器来指定该组件的位置,大小,然后将该组件添加到容器中。

下面的程序示范了如何使用绝对定位来控制窗口中的GUI组件

publicclassTestNullLayout{

Buttonb1=newButton("

第一个按钮"

Buttonb2=newButton("

第二个按钮"

//将容器的布局管理器设置为null

f.setLayout(null);

//定义按钮的位置,大小

b1.setBounds(20,30,90,28);

f.add(b1);

b2.setBounds(50,45,120,35);

f.add(b2);

newTestNullLayout().init();

运行效果如下:

3.5BoxLayout布局管理器

GridBagLayout布局管理器功能虽然强大,但是太复杂了。

所以Swing引入了一个新的布局管理器。

BoxLayout布局管理器可以在水平和垂直位置上放置组件。

BoxLayout提供了如下的简单构造器:

●BoxLayout(Containertarget,intaxis):

创建基于target容器的布局管理器、该布局管理器里的组件按照axis方向排列。

我们来写一个简单的例子:

publicclassTestBoxLayout{

Framef=newFrame();

publicvoidinit()

{

//添加BOxLayout布局管理器到容器中,并指定排列方式:

垂直

f.setLayout(newBoxLayout(f,BoxLayout.Y_AXIS));

按钮一"

按钮二"

按钮三"

newTestBoxLayout().init();

BoxLayout通常和Box容器结合使用,Box是一个特殊的容器。

他有点像Panel,但该容器默认使用BoxLayout布局管理器。

Box提供了如下两个静态方法来床架Box对象

●CreateHorizontalBox();

创建一个水平排列的Box容器

●CreateVeriticalBox();

创建一个垂直排列的Box容器

我们写个程序来测试一下Box容器

publicclassTestBox{

//定义一个水平放置组件的BOx对象

Boxx=Box.createHorizontalBox();

//定义一个垂直房子组件的Box对象

Boxy=Box.createVerticalBox();

x.add(newButton("

y.add(newButton("

按钮四"

f.add(x,BorderLayout.NORTH);

f.add(y);

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

当前位置:首页 > 高中教育 > 高中教育

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

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