Java实验项目三_组件与事件编程_第1部分
- 格式:pdf
- 大小:174.20 KB
- 文档页数:12
第Ⅰ部分:实验指导实验1:Java开发环境J2SE一、实验目的(1)学习从网络上下载并安装J2SE开发工具。
(2)学习编写简单的Java Application程序.(3)了解Java源代码、字节码文件,掌握Java程序的编辑、编译和运行过程。
二、实验任务从网络上下载或从CD-ROM直接安装J2SE开发工具,编写简单的Java Application程序,编译并运行这个程序。
三、实验内容1.安装J2SE开发工具Sun公司为所有的java程序员提供了一套免费的java开发和运行环境,取名为Java 2 SDK,可以从上进行下载。
安装的时候可以选择安装到任意的硬盘驱动器上,例如安装到C:\j2sdk1.4.1_03目录下。
教师通过大屏幕演示J2SE的安装过程,以及在Windows98/2000/2003下环境变量的设置方法。
2.安装J2SE源代码编辑工具Edit Plus教师通过大屏幕演示Edit Plus的安装过程,以及在Windows98/2000/2003操作系统环境下编辑Java 原程序的常用命令的用法。
3.编写并编译、运行一个Java Application程序。
创建一个名为HelloWorldApp的java Application程序,在屏幕上简单的显示一句话"老师,你好!"。
public class HelloWorldApp{public static void main(String[] args){System.out.println("老师,你好!");}}4.编译并运行下面的Java Application程序,写出运行结果。
1:public class MyClass {2:private int day;3:private int month;4:private int year;5:public MyClass() {6:day = 1;7:month = 1;8:year = 1900;9:}10:public MyClass(int d,int m,int y) {11:day = d;12:month = m;13:year = y;14:}15:public void display(){16:System.out.println(day + "-" + month + "-" + year);17:}18:public static void main(String args[ ]) {19:MyClass m1 = new MyClass();20:MyClass m2 = new MyClass(25,12,2001);21:m1.display();22:m2.display();23:}24:}运行结果:1-1-190025-12-2001实验2:Java基本数据类型一、实验目的(1)掌握javadoc文档化工具的使用方法。
Java程序设计实用教程(第4版)习题解答与实验指导叶核亚编著2013年11月目录“Java程序设计”课程教学要求 (1)第1章Java概述 (3)第2章Java语言基础 (5)第3章类的封装、继承和多态 (22)第4章接口、内部类和Java API基础 (37)第5章异常处理 (42)第6章图形用户界面 (44)第7章多线程 (49)第8章输入/输出流和文件操作 (51)“Java程序设计”课程教学要求1. 课程性质、目的和任务程序设计是高等学校计算机学科及电子信息学科各专业本科的核心专业基础课程,是培养学生软件设计能力的重要课程。
在计算机学科的本科教学中,起着非常重要的作用。
“Java程序设计”是计算机科学与技术专业本科的专业基础限选课,开设本课程的目的是:进行程序设计和面向对象方法的基础训练;使用Java编程技术,设计解决操作系统、网络通信、数据库等多种实际问题的应用程序。
本课程通过全面、系统地介绍Java语言的基础知识、运行机制、多种编程方法和技术,使学生理解和掌握面向对象的程序设计方法,理解和掌握网络程序的特点和设计方法,建立起牢固扎实的理论基础,培养综合应用程序的设计能力。
本课程的先修课程包括:C/C++程序设计I、C/C++程序设计II、数据结构、操作系统、计算机网络、数据库原理等。
2. 教学基本要求本课程的基本要求如下。
①了解Java语言特点,理解Java Application应用程序的运行原理和方法。
掌握在JDK 环境中编译和运行程序的操作,熟悉在MyEclipse集成开发环境中,编辑、编译、运行和调试程序的操作。
②掌握Java语言中语句、数组、引用类型等基本语法成分的使用方法,通过类、接口、内嵌类型、包、异常处理等机制表达和实现面向对象程序设计思想。
③掌握Java的多种实用技术,包括图形用户界面、多线程、文件操作和流、使用URL 和Socket进行网络通信等。
④熟悉Java JDBC数据库应用的设计方法。
JAVA程序设计基础实验一实验报告一课程学号专业班级java程序设计xxxxxxxx实验项目姓名java语言基础xxxx成绩实验日期指导教师2021-9-17xxx计算机科学与技术(嵌入式方向)一【实验目的】(1)介绍java程序的结构及特点(2)熟识java语言的研发与运转环境(3)掌控java数据类型、语句和表达式(4)掌控java运算符及数据初始化(5)掌控java掌控语句二【实验内容】【项目一】完成实验指导书p2――1.2.1一个简单的应用程序。
classa{voidf(){system.out.println(\}}classb{}publicclasshello{publicstaticvoidmain(stringargs[]){system.out.println(\你好,很高兴学习java\aa=newa();a.f();}}【项目二】顺利完成实验指导书p6――1.3联手编程【项目三】完成实验指导书p14――3.2.1猜数字随机分配给客户一个1~100之间的整数?用户从键盘输入自己的猜测程序返回提示信息,提示信息分别是“猜大了”、“猜小了”和“猜对了”?用户可根据提示信息再次输入猜测,指导提示信息是“猜对了”(1)程序代码importjava.util.*;publicclasstest2{publicstaticvoidmain(stringargs[]){system.out.println(\给你一个1至100之间的整数,请猜测这个数\inta=(int)(math.random()*100)+1;intb=0;scannerreader=newscanner(system.in);system.out.println(\输入您的猜测:\b=reader.nextint();while(b!=a){if(b>a){system.out.println(\猜大了\b=reader.nextint();}elseif(bsystem.out.println(\猜猜大了\b=reader.nextint();}}system.out.println(\猜对了!\}}(2)运转结果图片【项目四】数组撰写一个java程序,定义一个2行3列于的整型二维数组,对数组中的每个元素赋值一个0~100的随机整数,然后分别对第一行、第二行的元素排序。
Java编程基础实验报告编制教师唐春兰审定代伟(适用于计算机科学学院专业学生)2016至2017学年第一学期计算机科学学院实验名称:Java语言基础指导教师:唐春兰实验仪器:计算机实验日期:2016 年12 月2 日实验地点:第三实验楼209 实验目的:1、了解Java 的数据类型;2、掌握各种变量的声明方式;3、理解运算符的优先级;4、掌握JAVA基本数据类型、运算符与表达式、数组的使用方法;5、理解JAVA程序语法结构,掌握顺序结构、选择结构和循环结构语法的程序设计方法;6、通过以上内容,掌握JAVA语言的编程规则。
实验内容及基本要求:1、读下列程序,理解不同数据类型变量的声明,写出其输出结果并上机运行验证。
public class SHIYAN2_1 {public static void main(String[] args) {byte b=0x55;short s=0x55ff;int i=1000000;long l=0xffffL;char c='a';float f=0.23F;double d=0.7E-3;boolean B=true;String S="这是字符串类数据类型";System.out.println("字节型变量 b = "+b);System.out.println("短整型变量 s = "+s);System.out.println(" 整型变量 i = "+i);System.out.println("长整型变量 l = "+l);System.out.println("字符型变量 c = "+c);System.out.println("浮点型变量 f = "+f);System.out.println("双精度变量 d = "+d);System.out.println("布尔型变量 B = "+B);System.out.println("字符串类对象 S = "+S);}}2、分析下列程序,了解变量的使用范围,修改程序使之能成功运行。
第一部份绪论 (2)本课程实验的作用与任务 (2)本课程实验的基础知识 (2)本课程实验教学项目及其教学要求 (2)第二部份基本实验指导 (4)实验一:Java基本语法 (4)实验三:Java面向对象程序设计(一) (9)实验五:Java常用类 (18)实验七:Java集合 (21)实验九:GUI图形用户界面 (26)第一部份绪论本课程实验的作用与任务使学生进一步深刻理解Java语言基本概念、语法规则及程序结构,熟练掌握Java语言程序设计的基本方法,提高利用Java在网络环境下开发、设计应用程序的能力,从而进一步培养学生的创新能力和解决实际问题的能力。
熟悉JDK工具的编程和调试环境;熟练掌握选择和循环结构的程序设计;熟练掌握面向对象的程序设计思想,包括系统类的应用和用户自定义类;充分理解类的三种的特性:封装、继承和多态,特别是通过接口和抽象类理解多态;掌握图形用户界面的设计,特别是事件处理;掌握包的使用;掌握常用的输入输出流类的应用。
最后能根据实验的要求认真完成实验报告。
本课程实验的基础知识Java的基本数据类型包括:byte,short,int,long,double,char。
Java的数组属于引用类型的数据,是将相同类型的数据按顺序组成的一种符合数据类型。
Java的运算符有算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符,特别要注意它们的优先级。
Java的控制语句有if语句、switch语句、for语句、while语句、do-while语句。
类是组成Java程序的基本要素,类有两个重要的成员:成员变量和方法。
类是创建对象的模板,类将对象的属性和功能封装为一个整体。
成员变量和类变量的区别、实例方法和类方法的区别、方法的重载、成员的访问权限等都是实验课程所依据的重要理论。
继承、多态、接口、包及内部类都是Java中非常重要的概念。
Java使用“流”来读写数据。
Java的输入输出工作是通过FileInputStream类、FileReader 类、BufferedReader类、ByteArrayInputStream类、ByteArrayOutputStream类等完成的。
Java组件及事件处理实验总结一、实验目的本次实验旨在深入理解Java组件及事件处理机制,掌握Java Swing框架的使用,熟悉Java GUI应用程序的开发流程,提高解决实际问题的能力。
二、实验内容1.组件介绍与使用在实验中,我们学习了Java的GUI组件,包括标签(JLabel)、按钮(JButton)、文本框(JTextField)等。
通过实例化组件、设置属性、添加事件监听器等操作,我们了解了如何将这些组件用于构建GUI应用程序。
2.事件处理机制我们学习了Java的事件处理机制,包括事件监听器、事件对象等。
通过实现ActionListener接口,我们学会了如何处理按钮点击、菜单项选择等事件。
在实验中,我们还学习了如何创建自定义事件及其监听器。
3.布局管理器布局管理器是用于控制组件在容器中排列的机制。
在实验中,我们学习了常见的布局管理器,如流式布局(FlowLayout)、边框布局(BorderLayout)和卡片布局(CardLayout)等。
通过使用不同的布局管理器,我们了解了如何优化组件的布局,提高用户界面的友好性。
4.菜单与工具栏在实验中,我们学习了如何创建菜单和工具栏,并添加了相应的菜单项和按钮。
通过实现ActionListener接口,我们学会了如何处理菜单项选择和工具栏按钮点击事件。
5.事件分派机制我们还学习了Java的事件分派机制,即事件是如何从源组件传递到目标组件的。
通过分析示例程序,我们了解了事件分派机制的核心概念,如事件源、事件监听器、事件对象等。
三、实验总结通过本次实验,我们深入理解了Java组件及事件处理机制,掌握了Java Swing框架的使用。
实验中,我们不仅学习了基本组件的使用和事件处理机制,还学习了如何优化组件布局、创建菜单和工具栏等高级操作。
此外,我们还对Java的事件分派机制有了更深入的了解。
在实验过程中,我们遇到了一些问题,如组件重叠、事件处理程序无法正常工作等。
甘肃政法学院
本科生实验报告
(组件与事件处理)
一、实验目的
1、掌握java AWT图形用户界面设计常用类及其各自重要方法的应用。
2、掌握java 事件处理模式并熟练掌握文本框上事件处理的方法。
二.实验环境
实验室网络环境
三、实验内容与步骤
1、信号灯:请读懂下面模板程序,将其补充完整并调试运行。
2、布局与日历:请读懂下面模板程序,将其补充完整并调试运行。
3、方程求根:请读懂下面模板程序,将其补充完整并调试运行。
4、字体对话框:请读懂下面模板代码,将其补充完整并调试运行。
5、英语单词拼写练习:请读懂下面模板代码,将其补充完整并调试运行。
6、JLayeredPane分层窗格
7、使用表格显示日历
实验过程与分析
信号灯
package 信号灯;
import java.awt.*;
public class SignalCanvas extends Canvas
{ int red,green,yellow,x,y,r;
SignalCanvas()
{ setBackground(Color.white);。
Java实验综合实验及练习第一部分:编程题1、编写程序实现输入整数n,输出如下所示由数字组成的菱形。
(图中n=5)11 2 11 2 3 2 11 2 3 4 3 2 11 2 3 4 5 4 3 2 11 2 3 4 3 2 11 2 3 2 11 2 112.给出年、月、日,计算该日是该年的第几天?3、利用求素数的方法,就6~2000000之间的所有偶数验证歌德巴赫猜想:任何一个大于6的偶数可以分解为两个素数之和。
4、现有15位选手参加比赛,有6个评委每个评委都要给每位选手打分,分数为60~100分,现需要定义二维数组存储选手成绩,每行存储一位选手打分情况,要求输出选手得分以及选手最后得分,以及选手名次。
评分规则:分数为60~100分。
选手最后得分为:去掉一个最高分和一个最低分后其余4个分数的平均值。
5、设计一个描述二维平面上点的类Position,该类需要描述点的横坐标和纵坐标,并提供属性的set/get访问器方法和计算两点间距离的方法。
写一个程序测试这个类6、设计一个表示二维平面上点的类Point,包含有表示坐标位置的protected类型的成员变量x和y,获取和设置x 和y值的public方法。
设计一个表示二维平面上圆的类Circle,它继承自类Point,还包含有表示圆半径的protected类型的成员变量r、获取和设置r值的public方法、计算圆面积的public方法。
7、编写一个完整的Java Application 程序。
包含接口Shape,MyRectangle类,MyTriangle 类及Test类,具体要求如下:⑴、接口Shape:double area():求一个形状的面积double perimeter ():求一个形状的周长⑵、类 MyRectangle :实现Shape 接口,并有以下属性和方法:① 属性width : double 类型,表示矩形的长height : double 类型,表示矩形的高② 方法MyRectangle(double w, double h):构造函数ToString()方法 :输出矩形的描述信息,如“width=1.0,height=2.0, perimeter=6.0,area=2.0”⑶、类MyTriangle :实现Shape 接口,并有以下属性和方法:① 属性x,y,z: double 型,表示三角形的三条边s: 周长的1/2(注:求三角形面积公式为))()((z s y s x s s ---,s=(x+y+z)/2 ,开方可用Math.sqrt(double)方法)② 方法MyTriangle(double x, double y, double z):构造函数,给三条边和s 赋初值。
《Java语言基础》课程实验指导书合肥学院计算机科学与技术系实验一 Java开发环境的配置一、实验目的:1.熟悉JDK的安装和环境变量path,classpath的配置;2.熟悉Editplus(UltraEdi或TextPad)编辑工具;3.认识Application和Applet程序结构;二、实验内容:1.JDK的安装和配置环境变量path,classpath;2.熟悉安装使用Editplus(UltraEdi或TextPad)编辑工具3.安装和使用Java集成开发工具(如MyEclipse)*;4.编译调试Application和Applet程序;三、实验要求:1.程序能输出一条简单的问候信息;2.实验报告中对程序结构做出详细的解释;3.实验报告中给出配置JDK的步骤;4.写出实验报告中要求记录编译和执行Java程序当中的系统错误信息提示,并给出解决办法;四、实验步骤:1.从上下载最新版本的JDK,并安装;2.设置环境变量path ,classpath, 使得Java程序能正确编译和执行;3.在Editplus(或UltraEdit)环境下编写一个Application程序;(1)在主方法static public void main(String[] args)中调用System.out.println()方法,使程序输出一条问候信息;(2) 编译运行程序,观察运行情况和输出结果。
(使用JDK环境,调用javac.exe和java.exe编译和执行程序)4. 在Editplus(或UltraEdit)环境下编写一个Applet程序;(1)在public void paint(Graphics g)方法中调用g.drawString()方法,使程序输出一条问候信息;(2) 编译运行程序,观察运行情况和输出结果。
(使用JDK环境,调用javac.exe编译和浏览器解释执行Applet程序)实验二 Java语言基础一、实验目的:1.熟悉Java基本语法,基本数据类型,各种运算符及表达式的使用;2.掌握运算符优先级,熟悉使用Java的选择语句,循环语句;二、实验内容:1.编写Java Application程序,输出1900年到2000年之间的所有润年。
java-组件及事件处理1.Java String概述 通过图形⽤户界⾯(GUI),⽤户和程序之间可以⽅便的进⾏交互。
Java的java.awt包,即java抽象窗⼝⼯具包(AWT)提供了许多⽤来设计GUI的组件类。
java早期进⾏⽤户界⾯设计时,主要使⽤java.awt包提供的类,⽐如button(按钮)、textfield(⽂本框)、list(列表)等。
2.AWT介绍 所有的可以显⽰出来的图形元素都称为Component,Component代表了所有的可见的图形元素,Component⾥⾯有⼀种⽐较特殊的图形元素叫Container,Container(容器)在图形界⾯⾥⾯是⼀种可以容纳其它Component元素的⼀种容器,Container本⾝也是⼀种Component的,Container⾥⾯也可以容纳别的Container。
Container⾥⾯⼜分为Window和Pannel,Window是可以独⽴显⽰出来的,平时我们看到的各种各样的应⽤程序的窗⼝都可以称为Window,Window 作为⼀个应⽤程序窗⼝独⽴显⽰出来,Pannel也可以容纳其它的图形元素,但⼀般看不见Pannel,Pannel不能作为应⽤程序的独⽴窗⼝显⽰出来,Pannel要想显⽰出来就必须得把⾃⼰装⼊到Window⾥⾯才能显⽰出来。
Pannel应⽤⽐较典型的就是Applet(JAVA的页⾯⼩应⽤程序),现在基本上已经不⽤了,AJAX和JAVASCRIPT完全取代了它的应⽤。
Window本⾝⼜可以分为Frame和Dialog,Frame就是我们平时看到的⼀般的窗⼝,⽽Dialog则是那些需要⽤户进⾏了某些操作(如点击某个下拉菜单的项)才出现的对话框,这种对话框就是Dialog。
3.组件和容器(Component和Container)frame:1 package cn.javastudy.summary;23/**学习JAVA的GUI编程编写的第⼀个图形界⾯窗⼝*/4 import java.awt.*;56public class TestFrame {7public static void main(String args[]) {8 Frame f = new Frame("我的第⼀个JAVA图形界⾯窗⼝");9/*10 * 这⾥只是在内存⾥⾯创建了⼀个窗⼝对象还不能真正显⽰出来然我们看到11*/12 f.setBackground(Color.blue);// 设置窗体的背景颜⾊13// blue是Color类⾥⾯的⼀个静态常量,可以使⽤“类名.静态常量名”来访问14 f.setVisible(true);// 设置窗体是否可见15/*16 * 要想看到在内存⾥⾯创建出来的窗⼝对象,必须调⽤setVisble()⽅法,并且把参数true传⼊才能看得见窗体如果传⼊的参数是false,那么窗体也是看不见的17*/18 f.setSize(400, 400);// 设置窗体的初始⼤⼩19 f.setLocation(200, 200);// 设置窗体出现时的位置,如果不设置则默认在左上⾓(0,0)位置显⽰20 f.setResizable(false);21/*22 * 设置窗体能否被改变⼤⼩,设置为false后表⽰不能改变窗体的显⽰⼤⼩这⾥将窗体显⽰的⼤⼩设置为200X200,那么窗体的显⽰只能是这个⼤⼩了,不能再使⽤⿏标拖⼤或者缩⼩23*/24 }25 }运⾏结果如下:1package cn.javastudy.summary;23import java.awt.*;4public class TestMultiFrame{5public static void main(String args[]){6 MyFrame f1 = new MyFrame(100,100,200,200,Color.BLUE);7 MyFrame f2 = new MyFrame(300,100,200,200,Color.YELLOW);8 MyFrame f3 = new MyFrame(100,300,200,200,Color.GREEN);9 MyFrame f4 = new MyFrame(300,300,200,200,Color.MAGENTA);10 }11 }12/*⾃定义⼀个类MyFrame,并且从Frame类继承13这样MyFrame类就拥有了Frame类的⼀切属性和⽅法14并且MyFrame类还可以⾃定义属性和⽅法15因此使⽤从Frame类继承⽽来的⾃定义类来创建图形窗⼝⽐直接使⽤Frame类来创建图形窗⼝要灵活16所以⼀般使⽤从Frame类继承⽽来的⾃定义类创建图形窗⼝界⾯⽐较好,17不推荐直接使⽤Frame类来创建图形窗⼝界⾯18*/19class MyFrame extends Frame{20static int id = 0;21//定义⼀个静态成员变量id,⽤来记录创建出来的窗⼝的数⽬22 MyFrame(int x,int y,int w,int h,Color color){23//⾃定义构成⽅法,在构造⽅法体内使⽤super调⽤⽗类Frame的构造⽅法24super("MyFrame"+(++id));25 setBackground(color);26/*使⽤从⽗类Frame继承⽽来的⽅法设置窗体的相关属性*/27 setLayout(null);28 setBounds(x,y,w,h);29 setVisible(true);30 }31 }运⾏结果:PanelPanel范例:1package cn.javastudy.summary;23import java.awt.*;4public class TestPanel{5public static void main(String args[]){6 Frame f = new Frame("JAVA Fram With Panel");7 Panel p = new Panel(null);8 f.setLayout(null);9 f.setBounds(300,300,500,500);//这⾥设置的坐标(300,300)是相对于整个屏幕的10 f.setBackground(new Color(0,0,102));//设置背景颜⾊时使⽤三基⾊(红,绿,蓝)的⽐例来调配背景⾊11 p.setBounds(50,50,400,400);//这⾥设置的坐标(50,50)是相对于Frame窗体的12 p.setBackground(new Color(204,204,255));13 f.add(p);//把Panel容器装⼊到Frame容器中,使其能在Frame窗⼝中显⽰出来14 f.setVisible(true);15 }16 }运⾏结果如下:4.布局管理器第⼀种布局管理器——FlowLayout测试代码:1package cn.javastudy.summary;23import java.awt.*;45public class TestFlowLayout {6public static void main(String args[]) {7 Frame f = new Frame("FlowLayout");8/*9 * 使⽤Button类创建按钮按钮类的其中⼀个构造⽅法:Button(String label) label为按钮显⽰的⽂本10*/11 Button btn1 = new Button("button1");12 Button btn2 = new Button("button2");13 Button btn3 = new Button("button3");14/* setLayout⽅法的定义:public void setLayout(LayoutManager mgr) */15 f.setLayout(new FlowLayout());// 使⽤流⽔(Flow)线般的布局16/* 使⽤了布局管理器FlowLayout,这⾥的布局采⽤默认的⽔平居中模式 */17// f.setLayout(new FlowLayout(FlowLayout.LEFT));18/* 这⾥在布局的时候使⽤了FlowLayout.LEFT常量,这样就将按钮设置为左对齐 */19// f.setLayout(new FlowLayout(FlowLayout.RIGHT));20/* 这⾥在布局的时候使⽤了FlowLayout.RIGHT常量,这样就将按钮设置为右对齐 */21 f.add(btn1);// 把创建出来的按钮放置到Frame窗体中22 f.add(btn2); // 这⾥并没有设置按钮的⼤⼩与位置23 f.add(btn3); // 设置按钮的⼤⼩与位置都是由布局管理器来做的24 f.setVisible(true);25 f.setSize(200, 200);26 }27 }运⾏结果如下:第⼆种布局管理器——BorderLayout测试代码:1package cn.javastudy.summary;23import java.awt.*;45public class TestBorderLayout {6public static void main(String args[]) {7 Frame f = new Frame("BorderLayout");8 Button btnEast = new Button("East");9 Button btnWest = new Button("West");10 Button btnSouth = new Button("South");11 Button btnNorth = new Button("North");12 Button btnCenter = new Button("Center");13/*14 * 把按钮放置到Frame窗体时按照东西南北中五个⽅向排列好推荐使⽤这种⽅式去排列窗体元素,15 * 这样容易检查出错误因为这样写如果写错了编译器会提⽰出错16*/17 f.add(btnEast, BorderLayout.EAST);18 f.add(btnWest, BorderLayout.WEST);19 f.add(btnSouth, BorderLayout.SOUTH);20 f.add(btnNorth, BorderLayout.NORTH);21 f.add(btnCenter, BorderLayout.CENTER);22/*23 * 也可以使⽤这样的⽅式排列按钮在把按钮放置到Frame窗体时使⽤⽅向定位的字符串指定按钮的放置位置24 * 这种使⽤⽅向定位的字符串指定按钮的放置⽅式不推荐使⽤⼀旦写错了⽅向字符串就不好检查出来25 * 因为即使是写错了仍然可以编译通过26*/27/*28 * f.add(btnEast,"East");29 * f.add(btnWest,"West");30 * f.add(btnSouth,"South");31 * f.add(btnNorth,"North");32 * f.add(btnCenter,"Center");33*/34 f.setSize(200, 200);35 f.setVisible(true);36 }37 }运⾏结果:第三种布局管理器——GridLayout(表格布局管理器)测试代码:package cn.javastudy.summary;import java.awt.*;public class TestGridLayout {public static void main(String args[]) {Frame f = new Frame("GridLayout");Button btn1 = new Button("btn1");Button btn2 = new Button("btn2");Button btn3 = new Button("btn3");Button btn4 = new Button("btn4");Button btn5 = new Button("btn5");Button btn6 = new Button("bnt6");f.setLayout(new GridLayout(3, 2));/* 把布局划分成3⾏2列的表格布局形式 */f.add(btn1);f.add(btn2);f.add(btn3);f.add(btn4);f.add(btn5);f.add(btn6);f.pack();//根据窗⼝⾥⾯的布局及组件的preferedSize来确定frame的最佳⼤⼩f.setVisible(true);}}运⾏结果:布局练习这⼏种布局管理器可以设置在Frame⾥⾯,也可以设置在Panel⾥⾯,⽽Panel本⾝也可以加⼊到Frame⾥⾯,因此通过Frame与Panel的嵌套就可以实现⽐较复杂的布局实现代码:1package cn.javastudy.summary;23import java.awt.*;4public class TestTenButtons{5public static void main(String args[]){6/*这⾥主要是对显⽰窗体进⾏设置*/7 Frame f = new Frame("布局管理器的嵌套使⽤");8 f.setLayout(new GridLayout(2,1));//把整个窗体分成2⾏1列的表格布局9 f.setLocation(300,400);10 f.setSize(400,300);11 f.setVisible(true);12 f.setBackground(new Color(204,204,255));13/*这⾥主要是对Panel进⾏布局的设置*/14 Panel p1 = new Panel(new BorderLayout());15 Panel p2 = new Panel(new GridLayout(2,1));//p2使⽤2⾏1列的表格布局16 Panel p3 = new Panel(new BorderLayout());17 Panel p4 = new Panel(new GridLayout(2,2));//p4使⽤2⾏2列的表格布局18/*这⾥主要是把按钮元素加⼊到Panel⾥⾯*/19 p1.add(new Button("East(p1-东)"),BorderLayout.EAST);20 p1.add(new Button("West(p1-西)"),BorderLayout.WEST);21 p2.add(new Button("p2-Button1"));22 p2.add(new Button("p2-Button2"));23/*p1⾥⾯嵌套p2,把p2⾥⾯的按钮作为p的中间部分装⼊到p1⾥⾯*/24 p1.add(p2,BorderLayout.CENTER);//把p2作为元素加⼊到p1⾥⾯2526 p3.add(new Button("East(p3-东)"),BorderLayout.EAST);27 p3.add(new Button("West(p3-西)"),BorderLayout.WEST);28for(int i=0;i<4;i++){29 p4.add(new Button("p4-Button"+i));30 }31/*p3⾥⾯嵌套p4,把p4⾥⾯的按钮作为p的中间部分装⼊到p3⾥⾯*/32 p3.add(p4,BorderLayout.CENTER);3334 f.add(p1);//把Panel装⼊Frame⾥⾯,以便于在Frame窗体中显⽰出来35 f.add(p3);3637 }38 }运⾏结果:5.布局管理器总结。
上机实践6 组件及事件处理实验1 算术测试模板代码Teacher.javapublic class Teacher{ int numberOne,numberTwo;String operator="";boolean right;public int giveNumberOne(int n){ numberOne=(int)(Math.random()*n)+1;return numberOne;}public int giveNumberT wo(int n){ numberTwo=(int)(Math.random()*n)+1;return numberTwo;}public String giveOperator(){ double d=Math.random();if(d>=0.5)operator="+";elseoperator="-";return operator;}public boolean getRight(int answer){ if(operator.equals("+")){ if(answer==numberOne+numberTwo)right=true;elseright=false;}else if(operator.equals("-")){ if(answer==numberOne-numberTwo)right=true;elseright=false;}return right;}ComputerFrame.javaimport java.awt.*;import java.awt.event.*;public class ComputerFrame extends Frame implements ActionListener { TextField textOne,textTwo,textResult;Button getProblem,giveAnwser;Label operatorLabel,message;Teacher teacher;ComputerFrame(String s){ super(s);teacher=new Teacher();setLayout(new FlowLayout());textOne=【代码1】 //创建textOne,其可见字符长是10textTwo=【代码2】 //创建textTwo,其可见字符长是10textResult=【代码3】 //创建textResult,其可见字符长是10operatorLabel=new Label("+");message=new Label("你还没有回答呢");getProblem=new Button("获取题目");giveAnwser=new Button("确认答案");add(getProblem);add(textOne);add(operatorLabel);add(textTwo);add(new Label("="));add(textResult);add(giveAnwser);add(message);textResult.requestFocus();textOne.setEditable(false);textTwo.setEditable(false);【代码4】//将当前窗口注册为getProblem的ActionEvent事件监视器【代码5】//将当前窗口注册为giveAnwser的ActionEvent事件监视器【代码6】//将当前窗口注册为textResult的ActionEvent事件监视器 setBounds(100,100,450,100);setVisible(true);validate();addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) { System.exit(0);}});public void actionPerformed(ActionEvent e){ if(【代码7】) //判断事件源是否是getProblem{ int number1=teacher.giveNumberOne(100);int number2=teacher.giveNumberTwo(100);String operator=teacher.givetOperator();textOne.setText(""+number1);textTwo.setText(""+number2);operatorLabel.setText(operator);message.setText("请回答");textResult.setText(null);}if(【代码8】) //判断事件源是否是giveAnwser{ String answer=textResult.getText();try{int result=Integer.parseInt(answer);if(teacher.getRight(result)==true){ message.setText("你回答正确");}else{ message.setText("你回答错误");}}catch(NumberFormatException ex){ message.setText("请输入数字字符");}}textResult.requestFocus();validate();}}MainClass.javapublic class MainClass{ public static void main(String args[]){ ComputerFrame frame;frame=【代码9】//创建窗口,其标题为:算术测试}}实验2 信号灯2.模板代码SignalCanvas.javaimport java.awt.*;public class SignalCanvas extends Canvas{ int red,green,yellow,x,y,r;SignalCanvas(){ setBackground(Color.white);}public void setRed(int r){ red=r;}public void setGreen(int g){ green=g;}public void setYellow(int y){ yellow=y;}public void setPosition(int x,int y){ this.x=x;this.y=y;}public void setRadius(int r){ this.r=r;}public void paint(Graphics g){ if(red==1){ g.setColor(Color.red);}else if(green==1){ g.setColor(Color.green);}else if(yellow==1){ g.setColor(Color.yellow);}g.fillOval(x,y,2*r,2*r);}}SignalFrame.javaimport java.awt.*;import java.applet.*;import java.awt.event.*;public class SignalFrame extends Frame implements ItemListener { Choice choice;SignalCanvas signal=null;String itemRed="红灯",itemYellow="黄灯",itemGreen="绿灯";public SignalFrame(){ choice=【代码1】 //创建choice【代码2】 //创建choice添加itemRed【代码3】 //创建choice添加itemYellow【代码4】 //创建choice添加itemGreen【代码5】//将当前窗口注册为choice的ItemEvent事件监视器add(choice,BorderLayout.NORTH);try{ Class cs=Class.forName("SignalCanvas");signal=(SignalCanvas)cs.newInstance();add(signal,BorderLayout.CENTER);}catch(Exception e){ add(new Label("您还没有编写SignalCanvas类"),BorderLayout.CENTER); }setBounds(100,100,360,300);setVisible(true);validate();addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);}});}public void itemStateChanged(ItemEvent e){ String item= 【代码6】// choice返回被选中的条目int w=signal.getBounds().width;int h=signal.getBounds().height;int m=Math.min(w,h);signal.setRadius(m/6);if(item.equals(itemRed)){ if(signal!=null){ signal.setRed(1);signal.setYellow(0);signal.setGreen(0);signal.setPosition(w/3,0);signal.repaint();}}else if(item.equals(itemYellow)){ if(signal!=null){ signal.setRed(0);signal.setYellow(1);signal.setGreen(0);signal.setPosition(w/3,h/3);signal.repaint();}}else if(item.equals(itemGreen)){ if(signal!=null){ signal.setRed(0);signal.setYellow(0);signal.setGreen(1);signal.setPosition(w/3,2*h/3);signal.repaint();}}}}SignalMainClass.javapublic class SignalMainClass{ public static void main(String args[]){ SignalFrame frame;frame=new SignalFrame() ;frame.setTitle("信号灯");}}实验3 布局与日历2.模板代码CalendarBean.javaimport java.util.Calendar;public class CalendarBean{String day[];int year=2005,month=0;public void setYear(int year){ this.year=year;}public int getYear(){ return year;}public void setMonth(int month){ this.month=month;}public int getMonth(){ return month;}public String[] getCalendar(){ String a[]=new String[42];Calendar 日历=Calendar.getInstance();日历.set(year,month-1,1);int 星期几=日历.get(Calendar.DAY_OF_WEEK)-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]=String.valueOf(n) ;n++;}return a;}}CalendarFrame.javaimport java.util.*;import java.awt.*;import java.awt.event.*;import java.applet.*;public class CalendarFrame extends Frame implements ActionListener{ Label labelDay[]=new Label[42];Button titleName[]=new Button[7];String name[]={"日","一","二","三", "四","五","六"};Button nextMonth,previousMonth;int year=2006,month=10;CalendarBean calendar;Label showMessage=new Label("",Label.CENTER);public CalendarFrame(){ Panel pCenter=new Panel();【代码1】//将pCenter的布局设置为7行7列的GridLayout 布局。