南京工程学院 实 验 报 告 课程名称 java基础
实验项目名称 图形用户界面设计 实验学生班级 实验学生姓名 学 号
同组学生姓名 无 实验时间 2012年11月
实验地点 实验成绩评定
指导教师签字 年 月 日 一、实验目的和要求 1.目的:掌握java awt及swing组件的使用方法,包括窗口、框架、对话框、布局方式、面板、文本编辑器、按钮、组合框等,合理利用委托事件处理模型,掌握不同组件,不同事
件的事件处理方法,设计出能够响应事件的java图形用户界面。 2.要求:设计图形用户界面,事件处理,异常处理并弹出对话框,提示重新输入信息。 二、实验题目
验证哥德巴赫猜想,添加图形用户界面 三、实验方法与步骤(需求分析、算法设计思路、流程图等) 1.添加图形用户界面 import java.awt.*;
import java.awt.event.*; import javax.swing.*; public class gdbh extends frame implements actionlistener //窗口框
架响应单击事件,利用awt组件设计框架 {
private button button; //按钮 private textfield text1; //文本行 private textarea text2; //文本区 public gdbh() {
super(验证哥德巴赫猜想); //设置框架窗口标题 this.setbounds(450, 200, 350, 400); //设置框架的位置和尺寸 this.setresizable(false); // 设置框架大小不可改变
this.setbackground(color.lightgray); // 设置窗口背景颜色 this.setlayout(new flowlayout()); // 默认窗口流布局 中对齐
this.add(new label(输入一个整数)); text1=new textfield(,20); this.add(text1);
button=new button(验证哥德巴赫猜想); this.add(button); button.addactionlistener(this); //为按钮注册单击事件监听器,委托当前对
象处理事件
this.setlayout(new flowlayout()); //默认中对齐 text2=new textarea(20,25); text2.seteditable(false); this.add(text2);
this.setvisible(true); //设置组件可见 this.addwindowlistener(new winclose()); // 为框架注册窗口事件监听器,委
托winclose对象处理事件 }
2.实现单击事件和窗口事件监听器接口 public void actionperformed(actionevent e) //单击事件处理方法,实现actionlistener接口 {
string str =text1.gettext(); //获得文本行的字符串 try {
long num = long.parselong(str); // 将字符串转化成长整形 text2.settext(yz(num)); }
catch(numberformatexception n) {
joptionpane.showmessagedialog(this, \\+str+\\字符串不能转换成整数,请重新输入!!); return; }
} class winclose implements windowlistener //实现窗口事件监听器接口 {
public void windowclosing(windowevent e) // 窗口关闭事件处理方法 {
system.exit(0); //程序运行结束 } public void windowopened(windowevent e) {} public void windowclosed(windowevent e) {} public void windowiconified(windowevent e) {} public void windowdeiconified(windowevent e) {} public void windowactivated(windowevent e) {} public void windowdeactivated(windowevent e) {} }
3.异常处理 若文本行中的字符串不能转化成长整形,将弹出对话框“字符串不能转换成整数,请重新输入!!;另外如果所输入的整数为小于等于2或大于2小于等于5 也会弹出一个对话框“输入错误!必须是大于2的偶数或大于5的奇数!!”(该窗口代码设置在yz()函数中)。 try
{
long num = long.parselong(str); text2.settext(yz(num)); }
catch(numberformatexception n) {
joptionpane.showmessagedialog(this, \\+str+\\字符串不能转换成整数,请重新输入!!); 弹出对话框 return; }
四、实验原始纪录(源程序、数据结构等) 源程序如下
import java.awt.*;
import java.awt.event.*; import javax.swing.*;
public class gdbh extends frame implements actionlistener {
private button button; private textfield text1; private textarea text2; public gdbh()
{ super(验证哥德巴赫猜想); this.setbounds(450, 200, 350, 400); this.setresizable(false); this.setbackground(color.lightgray); this.setlayout(new flowlayout()); this.add(new label(输入一个整数)); text1=new textfield(,20); this.add(text1); button=new button(验证哥德巴赫猜想); this.add(button); button.addactionlistener(this); this.setlayout(new flowlayout()); text2=new textarea(20,25);
text2.seteditable(false); this.add(text2); this.setvisible(true); this.addwindowlistener(new winclose()); } public static void main(string args[]) {
new gdbh(); }
public void actionperformed(actionevent e) {
string str =text1.gettext(); try { long num = long.parselong(str);
text2.settext(yz(num)); } catch(numberformatexception n) { joptionpane.showmessagedialog(this, \\+str+\\字符串不能转换成整数,请重新输入!!); return; }
}
public string yz(long num) { string str1 = ; if(num>2&&num%2==0) { for (long i = 2;i<= num / 2; i++) { for(long j=num/2;j<num;j++)
{ if (prime(i) && prime(j)) { if(num==i+j) { str1+=num + = + i + + + j
+ ;\\n; } } } } } else if(num>5&&num%2!=0) { for(long
i=2;i<num;i++) { for(long j=i;j<num;j++)
{篇二:java画板实验报告 二、java画板的设计 一、实验名称及其要求
a、实验名称:java画板的设计 b、实验要求:
1.实验目的:图形界面设计。 熟悉java.awt包中的组件,掌握图形界面设计方法,理解委托事件处理模型。 2.实验要求: (1)设计图形界面添加菜单:窗口上添加各种组件及菜单,并处理组件及菜单的事件监听程序。
(2)实现画板的基本功能。 二、程序设计 本程序完成的是一个类似于windows画图板的绘图程序。由于不是开发和设计专业的绘
图和图像制作软件,所以,完成的程序的简单功能包括以下几项: 1. 新建一个空白图形文件:用于绘制新的图形。 2. 打开或保存一个图形文件,便于对图形文件的管理。 3. 绘制一些基本的画图组件:直线、矩形、实心矩形、椭圆、实心椭圆、圆、实心圆、
圆角矩形、实心圆角矩形等。
4. 可以用鼠标在绘图面板上单击拖动进行随笔画。 5. 橡皮擦:可以将已绘制好的图形擦掉。 6. 添加文字:可以在绘图区域内添加文字。 7. 选择文字的字体:通过一个下拉式的选择条,可以选中所需要的字体。本程序中包括:宋体、隶书、华文彩云、仿宋_gb2312、华文行楷、方正舒体、times new roman、serif、monospaced、sonsserif、garamond。当然,在下面的的程序分析中可以看到,由于我们灵活设置了字体数
组,是的可以随意添加系统支持的任何字体。大大方便和简化了程序设计。 8. 选择文字的字体风格:通过两个复选框按钮,可以选择需要的字体风格,包括:粗体、斜体,使用者有三种选择方式,包括:①同时选中两者、②只选择其中一种、③两者都不选中。
9. 设置画笔的颜色:可以选择当前绘制图形的画笔颜色,让图形更加丰富多彩、生动活泼。
10. 设置画笔的粗细:该选项在作用于基本图形组件和文字时,它的效果是不一样的。
①当作用于绘制图形组件时,它的作用是改变画笔绘制线条的粗细;②当作用于文 字时,它的作用是改变文字的大小。
由此可以看到,虽然我们的画图板程序不及那些专业的绘图程序,但是,“麻雀虽小,五脏俱全”,它已经具备了一个绘图软件所应该有的基本功能和操作。通过对本程序的分析,我
们可以更加系统地学习和了解如何从整体上设计和实现一个程序。 (一):程序基本组成框架和结构 1. 一组基本图形按钮,包括:pencil(随笔画)、line(直线)、rect(矩形)、frect(实心矩形)、oval(椭圆)、foval(实心椭圆)、circle(圆)、fcircle(实心圆)、roundrect(圆角矩形)、frrect(实心圆角矩形)、rubber(橡皮擦)、word(文字)。 这些基本图形都继承于同一个父类:drawings。drawings 具有变量(属性): int
x1,x2,y1,y2; //用来存放相应图形元素的坐标 int r,g,b; //用来存放图形色彩颜色信息 float stroke; //用来存放画笔粗细 int type; //用来保存图形类型 string s1; //用来保存输入文字字符串 string s2; //用来保存字体类型字符串 同时,drawing还具有方法: void draw ( graphics2d g2d ) {} ; draw()方法中用到了java绘图里面的graphics2d类,所有继承drawings类的图形子类都重写了此方法。这就是java程序中类的继承的概念。它对于程序代码的重用是很重要的,
将极大的方便和简略程序代码。 2. 此外,程序中还包括一下三个基本操作按钮: ① ② ③ 新建(new):新建一个图形文件。 打开(open):打开一个图形文件。 保存(save):保存当前图形文件。 3. 选择颜色和设置当前画笔粗细的按钮分别为:颜色(color)、线条粗细(stroke)。 4. 选择当前字体风格的选择框为:粗体(bold)、斜体(italic),用以设置当前字体的风格。
5. 选择当前字体的下拉式复选框为:styles。 6. 菜单条及其组成: ① 文件(file)菜单项,包括:new(新建一个图形文件)、load(打开一个图形文件)、save(保存当前图形文件)、exit(退出程序)。 ② ③
④ 颜色(color)菜单项:用来设置当前颜色。 线条粗细(stroke)菜单项:用来设置
当前画笔粗细。 帮助(help)菜单项:有关的程序帮助提示。 完成的程序界面效果如下图: 二):画图板相关操作 1. 新建一个图形文件
选择file→new菜单,则清除当前所绘制的图像,回到初始画面。 2. 打开已有的文件 选择file→load菜单,则清除当前所绘制的图像,并弹出打开文件对话框要求选择要打
开的文件。如下图: 3. 保存
选择file→save菜单,则弹出要求保存文件对话框。