分享
 
 
 

JAVA教程第五讲AWT图形用户界面设计

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

5.1 用AWT生成图形化用户界面

抽象窗口工具包AWT (Abstract Window Toolkit) 是 API为java 程序提供的建立图形用户界面GUI (Graphics User Interface)工具集,AWT可用于Java的applet和applications中。它支持图形用户界面编程的功能包括: 用户界面组件;事件处理模型;图形和图像工具,包括外形、颜色和字体类;布局治理器,可以进行灵活的窗口布局而与特定窗口的尺寸和屏幕分辨率无关;数据传送类,可以通过本地平台的剪贴板来进行剪切和粘贴。

5.1.1 java.awt包

java.awt包中提供了GUI设计所使用的类和接口,可从图5.1中看到主要类之间的关系。

java.awt包提供了基本的java程序的GUI设计工具。主要包括下述三个概念:

组件--Component

容器--Container

布局治理器--LayoutManager

5.1.2 组件和容器

Java的图形用户界面的最基本组成部分是组件(Component),组件是一个可以以图形化的方式显示在屏幕上并能与用户进行交互的对象,例如一个按钮,一个标签等。组件不能独立地显示出来,必须将组件放在一定的容器中才可以显示出来。

类java.awt.Component是许多组件类的父类,Component类中封装了组件通用的方法和属性,如图形的组件对象、大小、显示位置、前景色和背景色、边界、可见性等,因此许多组件类也就继续了Component类的成员方法和成员变量,相应的成员方法包括:

getComponentAt(int x, int y)

getFont()

getForeground()

getName()

getSize()

paint(Graphics g)

repaint()

update()

setVisible(boolean b)

setSize(Dimension d)

setName(String name)等

容器(Container)也是一个类,实际上是Component的子类,因此容器本身也是一个组件,具有组件的所有性质,但是它的主要功能是容纳其它组件和容器。

布局治理器(LayoutManager):每个容器都有一个布局治理器,当容器需要对某个组件进行定位或判定其大小尺寸时,就会调用其对应的布局治理器。

为了使我们生成的图形用户界面具有良好的平台无关性,Java语言中,提供了布局治理器这个工具来治理组件在容器中的布局,而不使用直接设置组件位置和大小的方式。

在程序中安排组件的位置和大小时,应该注重以下两点:

1.容器中的布局治理器负责各个组件的大小和位置,因此用户无法在这种情况下设置组件的这些属性。假如试图使用Java 语言提供的setLocation(),setSize(),setBounds() 等方法,则都会被布局治理器覆盖。

2.假如用户确实需要亲自设置组件大小或位置,则应取消该容器的布局治理器,方法为:

setLayout(null);

5.1.3 常用容器

容器java.awt.Container是Component的子类,一个容器可以容纳多个组件,并使它们成为一个整体。容器可以简化图形化界面的设计,以整体结构来布置界面。所有的容器都可以通过add()方法向容器中添加组件。

有三种类型的容器:Window、Panel、ScrollPane,常用的有Panel, Frame, Applet。

1.Frame

以下是容器的例子:

例5.1

import java.awt.*;

public class MyFrame extends Frame{

public static void main(String args[ ]){

MyFrame fr = new MyFrame("Hello Out There!");

//构造方法

fr.setSize(200,200);

//设置Frame的大小,缺省为(0,0)

fr.setBackground(Color.red);

//设置Frame的背景,缺省为红色

fr.setVisible(true);

//设置Frame为可见,缺省为不可见

}

public MyFrame (String str){

super(str); //调用父类的构造方法

}

}

photoshop教程

数据结构

五笔输入法专题

QQ病毒专题

共享上网专题

Google工具和服务专题

查看运行结果

一般我们要生成一个窗口,通常是用Window的子类Frame来进行实例化,而不是直接用到Window类。Frame的外观就像我们平常在windows系统下见到的窗口,有标题、边框、菜单、大小等等。每个Frame的对象实例化以后,都是没有大小和不可见的,因此必须调用setSize( )来设置大小,调用setVisible(true)来设置该窗口为可见的。

另外,AWT在实际的运行过程中是调用所在平台的图形系统,因此同样一段AWT程序在不同的操作系统平台下运行所看到的图形系统是不一样的。例如在windows下运行,则显示的窗口是windows风格的窗口;而在UNIX下运行时,则显示的是UNIX风格的窗口。

2. Panel

例5.2

import java.awt.*;

public class FrameWithPanel extends Frame{

public FrameWithPanel(String str){

super(str);

}

public static void main(String args[]){

FrameWithPanel fr = new FrameWithPanel("Frame with Panel");

Panel pan=new Panel();

fr.setSize(200,200);

fr.setBackground(Color.red);

//框架fr的背景颜色设置为红色

fr.setLayout(null);

//取消布局治理器

pan.setSize(100,100);

pan.setBackground(Color.yellow);

//设置面板pan的背景颜色为黄色

fr.add(pan); //用add方法把面板pan添加到框架fr中

fr.setVisible(true);

}

}

查看运行结果

一般我们要生成一个窗口,通常是用Window的子类Frame来进行实例化,而不是直接用到Window类。Frame的外观就像我们平常在windows系统下见到的窗口,有标题、边框、菜单、大小等等。每个Frame的对象实例化以后,都是没有大小和不可见的,因此必须调用setSize( )来设置大小,调用setVisible(true)来设置该窗口为可见的。

另外,AWT在实际的运行过程中是调用所在平台的图形系统,因此同样一段AWT程序在不同的操作系统平台下运行所看到的图形系统是不一样的。例如在windows下运行,则显示的窗口是windows风格的窗口;而在UNIX下运行时,则显示的是UNIX风格的窗口。

5.1.4 LayoutManager 布局治理器(1)

java为了实现跨平台的特性并且获得动态的布局效果,java将容器内的所有组件安排给一个"布局治理器"负责治理,如:排列顺序,组件的大小、位置,当窗口移动或调整大小后组件如何变化等功能授权给对应的容器布局治理器来治理,不同的布局治理器使用不同算法和策略,容器可以通过选择不同的布局治理器来决定布局。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有