3. 在命令提示符窗口运行 KY6_2.class 文件,并输入 1234
(三)使用日期类
Java 提供了3 个日期类:Date、Calendar 和DateFormat。其中,Date 类主要用于创建日期对象并获取日期,Calendar 类可获取和设置日期,DateFormat 类用来设置日期的格式。
Java 程序设计规定的基准日期为1970.1.1 00:00:00 格林威治(GMT)标准时间,当前日期是由基准 日期开始所经历的毫秒数转换出来的。
1. 使用日期类的Applate 应用程序 ? 程序功能:说明3 个日期类Date、Calendar 和DateFormat 的使用方式及显示的样式。 ? 编写KY5_9.java 程序文件,源代码如下。
import java.text.*; import java.util.*; import java.awt.*; import java.applet.*;
public class KY5_9 extends Applet { public void paint(Graphics g) { Date today; Calendar now; DateFormat f1,f2; String s1,s2;
today=new Date(); // 获取系统当前日期
g.drawString(\字符串格式:\93
f1=DateFormat.getInstance(); // 以默认格式生成格式化器 s1=f1.format(today); // 将日期转换为字符串 g.drawString(\系统格式:\// 生成长格式的中国日期格式化器
f1=DateFormat.getDateInstance(DateFormat.LONG, Locale.CHINA); // 生成长格式的中国时间格式化器
f2=DateFormat.getTimeInstance(DateFormat.LONG, Locale.CHINA); s1=f1.format(today); // 将日期转换为日期字符串 s2=f2.format(today); // 将日期转换为时间字符串 g.drawString(\中国格式:\now=Calendar.getInstance(); // 获取系统时间
s1=now.get(now.HOUR)+\时\分\+now.get(now.SECOND)+\秒\
g.drawString(\调整前时间:\now.set(2004,8,15,9,9,9); today=now.getTime();
g.drawString(\调整后时间:\} } ? 编译程序文件。 ? 在浏览器中打开包含应用程序的页面文件
- 34 -
2. 在独立运行的应用程序中使用日期函数。 ? 程序功能:补充说明3 个日期类Date、Calendar 和DateFormat 的使用方式及显示的样式。 ? 编写KY5_10.java 程序文件,源代码如下。
import java.util.*; import java.text.*; public class KY5_10 {
public static void main (String args[]) {
Date today = new Date(); //当前日期和时间 SimpleDateFormat sdf;
sdf= new SimpleDateFormat(\年MM 月dd 日hh 时mm 分ss 秒 a EEEEE\System.out.println(\当前日期和时间: \long hms=System.currentTimeMillis(); //当前时间的毫秒数 System.out.println(\当前时间的毫秒数=\Date tomorrow = new Date(hms+24*60*60*1000); System.out.println(\明天是\Calendar now = Calendar.getInstance(); int year =now.get(Calendar.YEAR); //年份
int month=now.get(Calendar.MONTH)+1; //月份 int day = now.get(Calendar.DATE); //日期
System.out.print(\今天是\年\月\日\int week = now.get(Calendar.DAY_OF_WEEK); //星期 switch (week) {
case 1: System.out.println(\星期日\case 2: System.out.println(\星期一\case 3: System.out.println(\星期二\case 4: System.out.println(\星期三\case 5: System.out.println(\星期四\case 6: System.out.println(\星期五\case 7: System.out.println(\星期六\} } } ? 编译并运行程序
- 35 -
实验 7 建立图形用户界面
一、实验目的
了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法,了解如何使用布局管理器对组件进行管理,以及如何使用 Java 的事件处理机制。
二、实验要求
1. 掌握在 Applet 容器中添加组件的方法,掌握使用布局管理器对组件进行管理的方法。 2. 理解 Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。 3. 掌握编写独立运行的窗口界面的方法。 4. 了解 Java Swing 组件的使用方法。 5. 了解对话框的使用方法。
三、实验内容
(一)创建图形用户界面
图形用户界面(Graphic User Interface ,简称GUI)是为方便用户使用设计的窗口界面,在图 形用户界面中用户可以看到什么就操作什么,取代了在字符方式下知道是什么后才能操作什么的方式。组件(Component)是构成GUI 的基本要素,通过对不同事件的响应来完成和用户的交互或组件之间的交互。组件一般作为一个对象放置在容器(Container)内,容器是能容纳和排列组件的对象,如Applet、Panel(面板)、Frame(窗口)等。通过容器的add 方法把组件加入到容器中。
1. 在Applet 中添加标签、按钮并使用网格布局 ? 程序功能:在Applet 容器中添加组件标签、按钮,并使用网格布局管理器排列组件在容器中
的位置。 ? 编写KY7_1.java 程序文件,源代码如下。
import java.awt.*;
import java.applet.Applet;
public class KY6_1 extends Applet { Label l1;
Button b1, b2, b3, b4, b5, b6; public void init() {
setLayout(new GridLayout(3,3)); // 设置网格布局(3 行3 列共9 个网格) l1=new Label(\标签1\b1 = new Button(\按钮1\b2 = new Button(\按钮2\b3 = new Button(\按钮3\b4 = new Button(\按钮4\add(l1);
- 36 -
add(b1); add(b2); add(b3);
add(new Label()); add(b4);
add(new Button(\按钮5\add( new Button(\按钮6\add(new Label(\标签2\} } ? 编译程序KY7_1.java。 ? 编写显示Applet 的页面文件KY7_1.html 2. 在面板中添加组件 ? 程序功能:在Applet 中添加面板容器,并分别在Applet、面板容器中添加组件并使用不同的
布局管理方式。 ? 编写KY7_2.java 程序文件,源代码如下。
import java.awt.*; import java.awt.Color; import java.applet.Applet;
public class KY6_2 extends Applet { public void init() {
//设置最底层的 Applet 容器为顺序布局
setFont(new Font(\
Label l=new Label(\这是最底层的 Applet 容器中的标签\add(l);
Panel panel1=new Panel(); add( panel1);
panel1.setBackground(Color.blue); panel1.setForeground(Color.red);
panel1.setLayout(new BorderLayout());//设置边界布局 panel1.add(\北\panel1.add(\南\panel1.add(\东\panel1.add(\西\
panel1.add(\这是在 Panel1 面板 中部添加的标签\Panel panel2=new Panel(); add( panel2);
panel2.setLayout(new GridLayout(3,1)); //设置网格布局 Choice c=new Choice ();//创建下拉式列表 c.addItem(\北京\c.addItem(\上海\c.addItem(\天津\
Label l1=new Label(\这是在 Panel2 面板中的标签\Button b1=new Button(\中的按钮\panel2.setBackground(Color.green); panel2.add(l1);
- 37 -
100
panel2.add(b1); panel2.add(c); } }
? ?
编译程序KY7_2.java。
编写显示Applet 的页面文件KY7_2.html
(二)了解事件处理机制
在图形用户界面中,程序和用户的交互是通过组件响应各种事件来实现的。例如,用户单击了一个按钮,意味着发生了按钮的单击事件;选中下拉框中的一个选项,意味着发生了一个选项事件。在Java 中能产生事件的组件叫做事件源,如按钮。如果希望对单击按钮事件进行处理,可给事件源(按钮)注册一个事件监听器(如包含按钮的容器),如同签订了一个委托合同,当事件源发生事件时,事件监听器就代替事件源对发生的事件进行处理,这就是所谓的委托事件处理机制。
1. 单击按钮的事件处理程序 ? 程序功能:使用手工布局设置组件标签、按钮的位置,为按钮编写单击事件处理方法。当用
户用鼠标单击按钮时,会听到一声响声。 ? 编写KY7_3.java 程序文件,源代码如下。
import java.awt.*;
import java.awt.event.*; import java.applet.Applet;
public class KY6_3 extends Applet implements ActionListener { // 实现动作事件监听 接口
public void init() {
setLayout(null);//关闭默认的顺序管理布局
Label l=new Label(\按一下按钮可听到响声!\add(l);
l.setBounds(40,10,150,30); Button b=new Button(\按钮\add(b);
b.setBounds(60,50,60,40);
b.addActionListener (this); // 注册事件源的动作监听者 }
public void actionPerformed(ActionEvent e) {//实现单击事件接口的方法 Toolkit.getDefaultToolkit ().beep(); //单击事件发生时作出的反应 } } ? 编译程序KY7_2.java ? 编写显示Applet 的页面文件KY7_3.html 2. 选择复选框和单选框按钮的事件处理程序 ? 程序功能:在Applte 上创建复选框、单选框、文本区域、单行文本框等组件,并实现根据用
户输入的10 进制数,选择不同选项可转换为2、8、16 进制数。 ? 编写KY7_4.java 程序文件,源代码如下。
- 38 -