- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十四章 GUI编程
图形用户界面(Graphics user interface, GUI)是指用图形的方式,借助菜单、按钮等标准界面元素和鼠标操作,帮助用户方便地向计算机系统发出指令、启动操作,并将系统运行的结果以图形方式显示给用户的技术。由于用户界面设计质量的好坏直接影响软件的使用,Java语言对此也十分重视,几乎在JDK每个新的版本中,都增加了一定的GUI程序设计新技术或功能,Java语言的GUI发展始终保持着较好的连贯性和兼容性。
目前Java主要提供了两个处理图形用户界面的类库:java.awt和javax.swing。 AWT:抽象窗口工具集(Abstract Windows Toolkit),由于Java代码可以在不同的系统平台运行,而不同平台的图形界面外观设计各有差异,所以Java程序的图形用户界面在不同的平台上可能出现不同的运行效果,其外观取决于具体的平台,所以称AWT是一个抽象的工具集。 Swing:Swing是在AWT的基础上构建的,提供了比标准AWT组件更强大和灵活的功能。与AWT组件不同的是,Swing组件不是由特定的平台代码实现,而是纯粹的Java代码,因此能够实现与平台的无关(此类组件一般被称为轻量级组件)。
利用GUI类库设计和实现图形用户界面的工作主要有两个:一是应用的外观设计,即创建组成图形界面的各部件,指定其位置和属性关系,根据需要进行排列,从而构成完整的图形用户界面的物理外观;二是与用户的交互处理,包括定义图形用户界面的事件以及各部件对不同时间的响应处理。
那现在开始就先讲AWT。AWT类包含在java.awt包中,主要包括用户界面组件、事件处理模型、图形和图像工具、布局管理器等。Java.awt包中的主要类及组件类的继承关系如图
先来个最简单的例子
public?class?TestPanel
{
public?static?void?main(String[]?args)
{
Frame?f?=?new?Frame(测试窗口);
//创建一个Panel对象
Panel?p?=?new?Panel();
//相Panel对象中添加两个组件
p.add(new?TextField(20));
p.add(new?Button(单击我));
f.add(p);
//设置窗口的大小、位置
f.setBounds(30,?30?,?250,?120);
//将窗口显示出来(Frame对象默认处于隐藏状态)
f.setVisible(true);
}
}
然后我讲下布局管理器AWT中分为
FlowLayout
BorderLayoutCardLayoutGridLayoutGridBagLayout
这五种
Swing的话再加上BoxLayout
顺序布局(FlowLayout)是Panel容器的缺省布局策略,即将加入容器中的组件依次从左至右,从上至下排列,适用于组件个数较少的情况。
public?class?TestFlowLayout
{
public?static?void?main(String[]?args)
{
Frame?f?=?new?Frame(测试窗口);
//设置Frame容器使用FlowLayout布局管理器
f.setLayout(new?FlowLayout(FlowLayout.LEFT?,?20,?5));
//向窗口中添加10个按钮
for?(int?i?=?0;?i??10?;?i++?)
{
f.add(new?Button(按钮?+?i));
}
//设置窗口为最佳大小
f.pack();
//将窗口显示出来(Frame对象默认处于隐藏状态)
f.setVisible(true);
}
}
pack()方法非常有用,能讲窗口调整到最佳大小
边界布局(BorderLayout)是Frame,Dialog,ScrollPane的缺省布局。区域布局将容器分为东西南北中五个区域,加入组件时,应通过字符串East/West /South/North/Center来标记组件的方位。
public?class?TestBorderLayout
{
public?static?void?main(String[]?args)
{
Frame?f?=?new?Frame(测试窗口);
//设置Frame容器使用BorderLayout布局管理器
f.setLayout(new?BorderLayout(30,?5));
f.add(new?Button(南)?,?BorderLayout.SOUTH);
f.add(new?Button(北)?,?BorderLayout.NORTH);
//默认添加到中间
f.add(new?Button(中))
文档评论(0)