实验三 图形用户界面设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三图形用户界面设计

实验目的

1.掌握Java语言中GUI编程的基本方法

2.掌握Java语言中AWT组件的基本用法

3.掌握Java语言中Swing组件的基本用法

实验导读

1.通过图形用户界面(GUI:Graphics User Interface),用户和程序之间可以方便地

进行交互。

AWT(Abstract Windowing Toolkit),中文译为抽象窗口工具包,是Java提供的用来建立和设置Java的图形用户界面的基本工具。AWT由Java中的包提供,里面包含了许多可用来建立与平台无关的图形用户界面(GUI)的类,这些类又被称为组件(components)。

Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。

JDK写程序所有功能都是靠虚拟机去操作本地操作系统。比如window下,就是JDK用windows API实现功能。而awt包中很多组件是组件自身去调用本地操作系统代码swing包中的组件采用的是调用本地虚拟机方法,由虚拟机再调用本地操作系统代码。意思就是中间多了一层,这样就加强了swing包的移植性,与本地关系不那强了。

图 AWT常用组件继承关系图

Container为容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来。

2.布局,容器中的组件的排放方式。常见的布局管理器:

FlowLayout(流式布局管理器):从左到右的顺序排列。Panel默认的布局管理器。

BorderLayout(边界布局管理器):东,南,西,北,中。Frame默认的布局管理器。

GridLayout(网格布局管理器):规则的矩阵

CardLayout(卡片布局管理器):选项卡

GridBagLayout(网格包布局管理器):非规则的矩阵

3.类JFrame是的扩展版本,该版本添加了对 JFC/Swing 组件架构的支持,常用方

法如下:

1)JFrame() 该构造方法可以创建一个无标题的窗口,窗口的默认布局为

BorderLayout布局。

2)JFrame(String s) 该构造方法可以创建一个标题为s的窗口,窗口的默认布

局为BorderLayout布局。

3)public void setBounds(int a,int b,int width,int height) 窗口调用该

方法可以设置出现在屏幕上时的初始位置是(a,b),即距屏幕左面a个像素、

距屏幕上方b个像素;窗口的宽是width,高是height。

4)public void setSize(int width,int height) 设置窗口的大小,窗口在屏

幕出现是默认位置是(0,0)。

5)public void setVisible(boolean b) 设置窗口是可见还是不可见,窗口默

认是不可见的。

6)public void setResizable(boolean b) 设置窗口是否可调整大小,窗口默认

是可调整大小的。

7)public void setDefaultCloseOperation(int operation) 设置用户在此窗体

上发起 "close" 时默认执行的操作。

8)public void setLocationRelativeTo(Component c) 设置窗口相对于指定组

件的位置。如果组件当前未显示,或者 c 为 null,则此窗口将置于屏幕的

中央。

实验内容

1.图形用户界面设计程序

要求:设计一个文字字体设置窗体,在该窗体中可以设置要显示文字的字体内容,包括字体名称、字体大小、粗体和斜体等字体风格。并模拟在不同操作系统下的显示效果。程序的最终显示效果如下:

提示:整个窗体继承于JFrame,采用BorderLayout布局。在窗体中添加三个JPanel:northPanel、centerPanel和southPanel,分别位于窗体的北部、中部和南部,然后分别在各个面板中添加其它组件,并逐步完善程序功能。

请按以下步骤完成程序设计:

1)新建ArtFont类,该类用于显示主界面。其主要代码如下:

public class ArtFont extends JFrame {

int星期几 = 日历.get - 1;

int day = 0;

if(month== 1 || month== 3 || month== 5 || month== 7 || month == 8 || month == 10 || month == 12) {

day = 31;

}

if (month == 4 || month == 6 || month == 9 || month == 11) { day = 30;

}

if (month == 2) {

if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) {

day = 29;

} else {

day = 28;

}

}

for (int i = 星期几, n = 1; i < 星期几 + day; i++) {

a[i] = (n);

n++;

}

return a;

}

}

1)补充代码,完成日历窗体界面类设计:

public class CalendarFrame extends Frame {

Label labelDay[] = new Label[42];

Label labelYear;

Button titleName[] = new Button[7];

Button nextMonth, previousMonth;

Label showMessage;

TextField inputYear;

CalendarBean calendar;

String name[] = { "日", "一", "二", "三", "四", "五", "六" };

int year = 2013, month = 1;

String days[];

相关文档
最新文档