Java实验五

Java实验五
Java实验五

Java实验五组件与事件处理

【目的】

①学习处理ActionEvent事件;

②学习处理ItemEvent事件和paint方法;

③学习使用布局类。

【内容】

1.算术测试。

?实验要求:

编写一个算书测试小软件,用来训练小学生的算术能力。程序由3个类组成,其中Teacher类对象负责给出算术题目,并判断回答者的答案是

否正确;ComputerFrame类对象负责为算术题目提供视图,比如用户可以

通过ComputerFrame类对象提供的GUI界面看到题目,并通过该GUI界面给

出题目的答案;MainClass是软件的主类。

?程序:

Teacher.java

public class Teacher

{

int numberOne, numberTwo;

String operator = "";

boolean right;

public int giveNumberOne(int n)

{

numberOne = (int)(Math.random() * n) + 1;

return numberOne;

}

public int giveNumberTwo(int n)

{

numberTwo = (int)(Math.random() * n) + 1;

return numberTwo;

}

public String giveOperator()

{

double d = Math.random();

if (d >= 0.5)

operator = "+";

else

operator = "-";

return operator;

}

public boolean getRight(int answer)

{

if (operator.equals("+"))

{

if (answer == numberOne + numberTwo)

right = true;

else

right = false;

}

else if (operator.equals("-"))

{

if (answer == numberOne - numberTwo)

right = true;

else

right = false;

}

return right;

}

}

ComputerFrame.java

import 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 = new TextField(10); //创建textOne,其可见字符长是

textTwo = new TextField(10); //创建textTwo,其可见字符长是

textResult = new TextField(10); //创建textResult,其可见字符长是

operatorLabel = 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);

getProblem.addActionListener(this);//将当前窗口注册为getProblem的ActionEvent事件监视器

giveAnwser.addActionListener(this);//将当前窗口注册为giveAnwser的ActionEvent事件监视器

textResult.addActionListener(this);//将当前窗口注册为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 (e.getSource() == getProblem) //判断事件源是否是getProblem

{

int number1 = teacher.giveNumberOne(100);

int number2 = teacher.giveNumberTwo(100);

String operator = teacher.giveOperator();

textOne.setText("" + number1);

textTwo.setText("" + number2);

operatorLabel.setText(operator);

message.setText("请回答");

textResult.setText(null);

}

if (e.getSource() == giveAnwser) //判断事件源是否是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.java

public class MainClass

{

public static void main(String args[])

{

ComputerFrame frame;

frame = new ComputerFrame("算术测试");//创建窗口,其标题为:算术测试

}

}

?实验后的练习:

1. 给上述程序增加测试乘、除的功能。

2.信号灯。

?实验要求:

编写一个带有窗口的应用程序。在窗口的北面添加一个下拉列表,该下拉列表有“”、“”和“”三个选项。在窗口的中心添加一个画布,当用户在下拉列表选择某项后,画布上绘制相应的信号灯。

?程序:

SignalCanvas.java

import 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.java

import 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=new Choice(); //创建choice

choice.add(itemRed); //创建choice添加itemRed

choice.add(itemYellow); //创建choice添加itemYellow choice.add(itemGreen); //创建choice添加itemGreen

choice.addItemListener(this); //将当前窗口注册为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= choice.getSelectedItem(); // 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.java

public class SignalMainClass

{ public static void main(String args[])

{ SignalFrame frame;

frame=new SignalFrame() ;

frame.setTitle("信号灯");

}

}

?实验后的练习:

1. 改进上述程序,在下拉列表中增加“熄灭所有灯”选项,当选中

该项时,画布上绘制一个半径为0,位置是(0,0)的圆。

3.布局与日历。

?实验要求:

编写一个应用程序,有一个窗口,该窗口为BorderLayout布局。窗口的中心添加一个Panel容器:pCenter,pCenter的布局是7行7列的

GriderLayout布局,pCenter中放置49个标签,用来显示日历。窗口的北

面添加一个Panel容器pNorth,其布局是FlowLayout布局,pNorth放置两

个按钮:nextMonth和previousMonth,单击nextMonth按钮,可以显示当

前月的下一月的日历;单击previousMonth按钮,可以显示当前月的上一

月的日历。窗口的南面添加一个Panel容器pSouth,其布局是FlowLayout

布局,pSouth中放置一个标签用来显示一些信息。

?程序:

CalendarBean.java

import 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.java

import 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();

pCenter.setLayout(new GridLayout(7,7)); //将pCenter的布局设置为行列的GridLayout 布局。

for(int i=0;i<7;i++)

{ titleName[i]=new Button(name[i]);

pCenter.add(titleName[i]);//pCenter添加组件titleName[i]。

}

for(int i=0;i<42;i++)

{

labelDay[i]=new Label("",Label.CENTER);

pCenter.add(labelDay[i]);//pCenter添加组件labelDay[i]。

}

calendar=new CalendarBean();

calendar.setYear(year);

calendar.setMonth(month);

String day[]=calendar.getCalendar();

for(int i=0;i<42;i++)

{ labelDay[i].setText(day[i]);

}

nextMonth=new Button("下月");

previousMonth=new Button("上月");

nextMonth.addActionListener(this);

previousMonth.addActionListener(this);

Panel pNorth=new Panel(),

pSouth=new Panel();

pNorth.add(previousMonth);

pNorth.add(nextMonth);

pSouth.add(showMessage);

showMessage.setText("日历:"+calendar.getYear()+"年"+

calendar.getMonth()+"月" );

ScrollPane scrollPane=new ScrollPane();

//scrollPane.add(pCenter);

this.add("Center", pCenter);// 窗口添加scrollPane在中心区域

this.add("North", pNorth);// 窗口添加pNorth 在北面区域

this.add("South", pSouth);// 窗口添加pSouth 在南区域。

}

public void actionPerformed(ActionEvent e)

{ if(e.getSource()==nextMonth)

{ month=month+1;

if(month>12)

month=1;

calendar.setMonth(month);

String day[]=calendar.getCalendar();

for(int i=0;i<42;i++)

{ labelDay[i].setText(day[i]);

}

}

else if(e.getSource()==previousMonth)

{ month=month-1;

if(month<1)

month=12;

calendar.setMonth(month);

String day[]=calendar.getCalendar();

for(int i=0;i<42;i++)

{ labelDay[i].setText(day[i]);

}

}

showMessage.setText("日历:"+calendar.getYear()+"年

"+calendar.getMonth()+"月" );

}

}

CalendarMainClass.java

public class CalendarMainClass

{ public static void main(String args[])

{ CalendarFrame frame=new CalendarFrame();

frame.setBounds(100,100,360,300);

frame.setVisible(true);

frame.validate();

frame.addWindowListener(new java.awt.event.WindowAdapter()

{ public void windowClosing(java.awt.event.WindowEvent e)

{ System.exit(0);

}

}

);

}

}

实验后的练习:

1. 请在CalendarFrame类中增加一个TextField文本框,用户可以通

过在文本框中输入年份来修改calendar对象的int成员year。

【结果】

将本次上机实验结果按照实验要求内容依次进行,填写实验目标、过程、结果。

【注意事项】

①实验报告要求每人提交一份,使用专门的报告纸,内容写全,包括实验名

称、班级、姓名、同组人,试验日期、交报告日期等。

②报告不需要填写源代码,只要将完成情况和所有练习题结果写上就可以。【思考题】

学号-姓名-Java语言实验报告四

《Java语言与面向对象程序设计基础》课程 实验报告四 姓名:xxx 学号:20097110080xxx 实验题1 [实验要求] ?掌握Java IO流处理 ?掌握文件操作 ?掌握多线程程序设计 [实验程序] import java.io.*; public class Test4_1 { public static void main(String[] args) { try { File myDir=new File("C:/Test"); if ( !myDir.exists()) myDir.mkdir(); else if ( !myDir.isDirectory()) { System.err.println(" 'C:/Test' is not a directory"); return; } File f=new File(myDir,"a.txt"); f.createNewFile(); FileWriter out = new FileWriter(f); for (int i=0;i<26;i++){ out.write((char)('A'+i)); } out.close(); } catch (IOException e) { System.out.println(e); } } } [运行结果]

[实验结论与收获]

掌握文件及文件夹的创建及文件的写入。 实验题2 [实验要求] 将实验1题中新建的"a.txt"文件内容复制到"C:\Test\Ex"目录中"b.txt"文件中。[实验程序] import java.io.*; public class Test4_2 { public static void main(String[] args) { try { File myDir=new File("C:/Test/Ex"); if ( !myDir.exists()) myDir.mkdir(); else if ( !myDir.isDirectory()) { System.err.println(myDir+ " is not a directory"); return; } File myFile =new File(myDir,"b.txt"); myFile.createNewFile(); FileReader in= new FileReader("C:/Test/a.txt"); BufferedReader bufIn = new BufferedReader(in); FileWriter out= new FileWriter (myFile); BufferedWriter bufOut= new BufferedWriter(out); String line; line = bufIn.readLine(); //System.out.println(line); while ( line!= null ) { System.out.println(line); bufOut.write(line,0,line.length()); bufOut.newLine(); line = bufIn.readLine(); } bufIn.close(); bufOut.close(); } catch (IOException e) { System.out.println(e); } } } [运行结果]

java实验二附答案

Java 实验二 实验二类与对象 实验目的 1、掌握面向对象程序设计的方法与Java 作为面向对象程序设计语言的特点; 2、掌握修饰符与构造方法的使用规则; 3、掌握接口的特点、结构、调用与继承; 4、掌握如何创建包, 通过包如何管理类; 5、掌握Java 的继承机制与实现多态的方法实验内容 (1)定义一个类Student,属性为学号、姓名与成绩;方法为增加记录SetRecord与得到记录GetRecord。SetRecord赋值学号、姓名与成绩,GetRecord通过学号得到考生的成绩。通过实例验 证编程无误。 ⑵定义一个接口Area,其中包含一个计算面积的抽象方法calculateArea()然后设 计Circle与Rectan两个类实现这个接口的方法calculateArea()分别计算圆与矩形的面积。通过实例验证编程无误。 (3) 假定根据学生的3门学位课程的分数决定其就是否可以拿到学位,对于本科生, 如果3门课程的平均分数超过60分即表示通过,而对于研究生,则需要平均分超过80分才能够通过。根据上述要求,请完成以下Java类的设计: (i)设计一个基类Student描述学生的共同特征。 (ii)设计一个描述本科生的类Undergraduate该类继承并扩展Student类。 (iii)设计一个描述研究生的类Graduate该类继承并扩展Student类。 (iv)设计一个测试类StudentDemo分别创建本科生与研究生这两个类的对象,并输 出相关信息 附实验一名称就是Java 语言基础实验报告分为以下几个部分 一实验名称二实验目的三实验仪器四实验步骤(把您的操作一步一步写清楚,java 程序代码要写) 五实验结果(程序运行后的结果就就是DOS 环境下运行出来的结果写在实验报告上) 六实验讨论(实验过程中的错误及如何改正,您的心得体会等) 答案: (1)定义一个类Student,属性为学号、姓名与成绩;方法为增加记录SetRecord与得到记录GetRecord。SetRecord 赋值学号、姓名与成绩,GetRecord 通过学号得到考生的成绩。通过实例 验证编程无误 public class Student { private int ID; private String name; private float score; public void SetRecord(int ID,String name,float score){ this、ID=ID; this、name=name; this、score=score; } public float getRecord(int ID){ if(ID==this 、ID) return this 、score; else return -1; }

java实验五

实验五:循环结构与数组 一、实验目的 1.掌握一维数组的概念、定义和使用 2.掌握数组与循环结构的联合使用 二、实验内容 1、随机产生20个0到100的整数,求最大值及其下标、最小值及其下标、平均值,并显示数组的所有元素值(按每行输出5个元素)以及最大值及其下标、最小值及其下标和平均值。 【提示】 产生随机数的方法:double number=Math.random( );(number以属于[0,1)) 提示代码: public class ArrayEx1 { public static void main(String arge[]){ int maxi=0,sum=0,aver; int []number; number= new int[20]; for(int i=0;i<20;i++){ number[i]=(int)(101*Math.random()); System.out.print(number[i]+" "); //如何五个打一行! } System.out.println(); for(int i=0;i<20;i++) { sum=sum+number[i]; if(number[maxi]

实验五 Java事件处理

实验五J a v a事件处理实验目的 1.掌握Java语言中的事件处理方法 2.掌握Java语言中事件源、监视器和处理事件的接口的概念 实验内容 1.图形用户界面设计程序 在实验三第1题的基础上,添加事件处理机制,并逐步完善程序功能。 分别用ArtFont类的对象做监视器和匿名内部类的对象做监视器实现。 要求实现如下功能: 当在文本框中输入文字后回车,在文本域中显示输入的文字。 当分别选择粗体和斜体复选框时,文本域中的文字分别显示粗体 和斜体样式。 当点击颜色按钮时,出现颜色选择对话框,选择需要的颜色,按 确定按钮后,按钮的前景色和文本域的前景色设置为选定的颜色。 当选择字体样式下拉框中的某一字体样式时,文本域中的文字设 置为指定的字体样式。 当选择字体大小下拉框中的某一字体大小时,文本域中的文字设 置为指定的字体大小。 当选择窗体样式下拉框中的某一窗体效果时,窗体外观改变为指 定的窗体外观。 图1 程序界面运行效果 package Sy; import .*; import .*; public class ArtFont extends JFrame { static ArtFont artFont; JComboBox fontType;et(year, month - 1, 1); int星期几 = 日历.get - 1; int day = 0; if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { day = 31; }

实验3 类和对象

实验3 类和对象的创建与使用 一、实验目的 1、掌握类的定义和对象的创建; 2、掌握构造方法的作用、格式及重载; 3、掌握修饰词对成员存取权限的限制。 4、掌握实例成员、类成员的定义和使用方法。 二、实验内容 1、定义储蓄账户类,并创建对象模拟银行基本操作。 2、两游戏角色决斗。给定二个不同的角色,判定交手的胜负关系。(选做) 3、设计学生类、学校类、录取类,根据学生成绩和学校分数线,判断是否录取。 三、实验步骤 说明:请将第1,3题代码写入实验报告实验步骤处。 1、模拟银行账户功能。 编写程序,模拟银行账户功能。要求如下: 属性:账号、姓名、地址、存款余额、最小余额。 方法:存款、取款、查询。 根据用户操作显示储户相关信息。 如存款操作后,显示储户原有余额、今日存款数额及最终存款余额。 取款时,若取款成功,显示信息提示;若最后余额小于最小余额,拒绝取款,并显示信息提示。具体显示信息可据方便性原则自拟。 public class AccountOperation { public static void main(String [] args) { Account account1=new Account("650101","柳眉","天河学院",800.00); Account account2=new Account("650102","郑杰","天河学院",200.00); account1.transfer(account1,account2,300.0); account1.deposit(300.5); account1.withdraw(200); account1.withdraw(300); account1.query(); System.out.println(account1.toString()); //System.out.println(https://www.360docs.net/doc/dd1850032.html,); error!! } } class Account { private String account; private String name; private String address; private double balance;

JAVA实验四异常处理

实验四异常处理 实验目的 1、掌握异常的概念和Java 异常处理机制。 2、掌握异常的定义、抛出和捕捉处理。 实验内容与要求 1、仔细读下面的JAVA语言源程序,自己给出程序的运行结果 import java.io.*; public class Ch31 { public static void main(String args[])throws IOException { int[] ko=new int[15]; int n,a; String x; BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter an integer:"); x=keyin.readLine(); n=Integer.parseInt(x); try { a=110/n; ko[15]=100; System.out.println("此描述无法执行!"); } catch(ArithmeticException e){ System.out.println("除数为0的错误"); } catch(ArrayIndexOutOfBoundsException f) { System.out.println("数组索引值大于数组长度的错误!"); } System.out.println("执行完catch的描述!!!"); } } 2.运行下面的程序,自己给出程序的运行结果。 import java.io.*; public class Ch32{ public Ch32(){ try{ int a[] = new int[2]; a[4] = 3; System.out.println("After handling exception return here?"); }catch(IndexOutOfBoundsException e){ System.err.println("exception msg:" + e.getMessage()); System.err.println("exception string:" + e.toString()); e.printStackTrace(); }finally{

Java程序设计-试验2(学生版)

华北电力大学 实验报告 实验名称Java程序面向对象设计(一)课程名称Java程序设计 专业班级:学生姓名: 学号:成绩: 指导教师:张学斌实验日期:

一、实验目的及要求 1.掌握类的定义。 2.掌握成员变量和成员方法的定义。 3.掌握构造方法的定义和使用。 4.掌握类的多态性 二、实验环境 Windows2000/Windows XP,JDK 1.2~1.6 三、试验内容和步骤 要求按照实验内容,写出详细实验过程和步骤,必要时截图。 实验1 机动车 1.1实验要求 编写一个Java应用程序,该程序有两个类:Vehicle(用于刻画机动车)和User(主类)。具体要求如下: Vehicle类有一个double类型的变量speed,用于刻画机动车的速度,一个int型变量power,用于刻画机动车的功率。定义了speedUp(int s)方法,体现机动车有加速功能。定义了speedDown()方法,体现机动车有减速功能。定义了setPower(int s),用于设置机动车的功率。定义了getPower()方法,用于获取机动车的功率。 在主类User的mian()方法中用Vehicle类创建对象,并让该对象调用方法设置功率,演示加速和减速功能。 1.2程序模板 Vehicle.java public class Vehicle { 【代码1】//声明double型变量speed,刻画速度 【代码2】//声明int型变量power,刻画功率 void speedUp(int s) { 【代码3】//将参数s的值与成员变量speed的和赋值给成员变量speed } void speedDown(int d) { 【代码4】//将成员变量speed与参数d的差赋值给成员变量speed } void setPower(int p) { 【代码5】//将参数p的值赋值给成员变量power } int getPower() { 【代码6】//返回成员变量power的值

java 程序设计 实验五

C H A N G Z H O U U N I V E R S I T Y 实验报告 课程名称:JAVA程序设计 学生姓名:文浩班级计算机141 学号14416122 学院(系):信息数理学院指导教师:吕猛 实验时间:2016 年12 月 6 日实验名称:实验五基于Swing的图形用户界面开发实验

实验五基于Swing的图形用户界面开发实验 一实验容 (1)完成开发界面如图所示,实现如下功能 ①选中“查看已有名片”按钮,程序处于查看状态,可以在“名片列表”中选择要查看的名片,程序在“名片详实信息”栏显示该名片的详实信息,此状态中名片信息处于不可编辑状态 ②选中“添加新名片”按钮,程序处于添加状态,所有关于明天信息的项目都处于可编辑状态,设置完成相关信息后,单击“添加”按钮,在“名片列表”中出现新添加名片的名称。单击“清空”按钮可以清空还没提交的容 ③在查看状态和添加状态下,都可以通过点击“爱好”、“学历”单选按钮以显示名片的不同附加信息 (备注:名片附加信息部分,当点击“爱好”按钮时显示的如图1所示,当点击“学历”按钮时显示如图2所示。) 图1

图2 (2)记事本设计与实现 如图所示(1)编程实现如图所示的界面(2)实现文件、编辑、格式、查看,帮助菜单(3)实现记事本的基本功能

二实验目的 (1)理解组件的分类 (2)掌握容器、布局管理器、普通组件的使用 (3)理解事件处理机制的工作原理 (4)掌握事件的添加和功能代码的编写方法 三实验过程 (1)问题分析 答:名片的设计除了使用最基本的组件,如JButton,Jlist,JCheckBox,JTextField, JRadioButton, CardLayout以外,最主要的是逻辑事件的编写,在成功布局完见面后,就需要编写事件处理。首先,由于是名片信息,保存着一个人的基本信息,所以可以用一个类来表示,如PersonInf类,其次,由于是多个人的信息,可以通过ArrayList 来存放类;其次就是当点击按钮的时候,正确添加和显示信息,此处用到cardLayout 布局,可以减少界面的复杂度,在使用JList的时候,除了加滚动条意外,还需要listModel 获取数据等。 (2)代码编写 答: (1) public class PersonInf { public String yourname; public String address1;

实验二 Java类-实验报告

南京信息工程大学实验(实习)报告 实验(实习)名称Java类实验(实习)日期 10.17 得分指导教师刘文杰院计算机与软件学院专业软件工程年级 2017级班次 1 姓名张成学号20171344024 1.实验目的: 1)熟练MyEclipse工具的使用与调试; 2)掌握Java类、方法和变量的定义和使用; 3)熟悉方法重载和覆盖、掌握this和supper关键字使用; 4)掌握4类访问控制符的使用。 2.实验内容: (1)定义一个类Circle,实现其面积计算功能getArea(); (2)编写程序,读入一个正整数并按降序显示它的所有最小因子。(教材第3章习题9)(3)利用多态性编程,实现求三角形、正方形和圆形的面积。(教材第4章习题6) 3.实验步骤 1、 public class Circle { public double radius; public Circle(double r) { radius= r; } public double getArea() { return radius*radius*Math.PI; } public static void main(String[] args) { Circle area1 = new Circle(5); System.out.println("The area is " + area1.getArea()); } }

2、 import java.util.Scanner; public class Read { public static void main(String[] args) { Scanner input =new Scanner(System.in); System.out.print("输入一个正整数:"); int n=input.nextInt(); int []a=new int[n]; int []b=new int[n]; int p,q=0,m=0; for(p=2;p<=n;p++) { while(n%p==0) { n=n/p; if(n!=1) { a[q]=p; q++; } else { a[q]=p; } } } while(q!=-1) { b[m]=a[q]; m++; q--; } for(p=0;p

实验五Java事件处理

实验五Java事件处理 实验目的 1.掌握Java语言中的事件处理方法 2.掌握Java语言中事件源、监视器和处理事件的接口的概念 实验内容 1.图形用户界面设计程序(ArtFo nt.java) 在实验三第1题的基础上,添加事件处理机制,并逐步完善程序功能。分别用ArtFont 类的对象做监视器和匿名内部类的对象做监视器实现。 要求实现如下功能: 当在文本框中输入文字后回车,在文本域中显示输入的文字。当分别选择粗体和斜体 复选框时,文本域中的文字分别显示粗体和斜体样式。 当点击颜色按钮时,出现颜色选择对话框,选择需要的颜色,按确定按钮后,按钮的 前景色和文本域的前景色设置为选定的颜色。 当选择字体样式下拉框中的某一字体样式时,文本域中的文字设置为指定的字 体样式。 当选择字体大小下拉框中的某一字体大小时,文本域中的文字设置为指定的字 体大小。 当选择窗体样式下拉框中的某一窗体效果时,窗体外观改变为指定的窗体外观。 图1程序界面运行效果 package Sy; import java.awt.*; import java.awt.event.*;

import javax.swing.*; public class ArtFont extends JFrame { static ArtFont artFont; JComboBox fontType;// 字体样式下拉框 JComboBox fontSize;// 字体大小下拉框 JComboBox windowStyle;// 窗体样式下拉框 JCheckBox boldBx;// 粗体按钮 JCheckBox italicBx;// 斜体按钮 JButton colorBtn;// 颜色按钮 String[] fontNames;// 字体名称 String[] fontSizes;// 字体大小 JLabel label;// 输入提示标签 JTextField inputText;// 文字输入框 JTextArea txtArea;// 文字显示区 JPanel northPanel;// 字体设置 JPanel centerPanel;// 显示效果区 JPanel southPanel;/样式设置 Font font; int boldStyle, italicStyle; int fontSizeStyle; String fontNameStyle; Color colorStyle = Color.black;// 设置字体的默认颜色为黑色 String[] style = { "默认显示效果 ", "Windows 显示效果 ", "Unix 显示效果 " }; public ArtFont() { super(”字体设置"); // 设置默认字体 boldStyle = 0; italicStyle = 0; fontSizeStyle = 10; fontNameStyle = "宋体 ";

Java实验四 -实验报告

实验四类和对象;类的继承和派生;多态性; 接口;构造器应用 一、实验目的 1、掌握类与对象的关系; 2、掌握类的定义; 3、掌握对象的声明及使用; 4、掌握构造方法的概念及调用时机; 5、掌握构造方法的重载; 6、掌握匿名对象的使用。 二、实验学时 2学时 三、实验类型 验证性实验 四、实验需求 1、硬件 每位学生配备计算机一台 2、软件 Windows 7操作系统,JDK,eclipse,MySQL 3、网络 无 4、工具 无 五、实验理论与预备知识 1、类与对象的关系; 2、类的定义; 3、对象的声明及使用; 4、构造方法的概念及调用时机; 5、构造方法的重载; 6、匿名对象的使用。 六、实验内容与结果 1、编写一个应用程序,该程序中有3个类:Trangle、Leder和Circle,分别用来刻画“三角形”、“梯 形”和“圆形”。

//三角形类 class Trangle { double sidea,sideb,sidec,sjxzc,sjxmj; boolean boo; public Trangle(double a,double b,double c) { sidea=a; sideb=b; sidec=c; if(a+b>c && a+c>b && b+c>a) { boo=true; } else { boo=false; } } double getlength() { double length; length=sidea+sideb+sidec; return length; } public double getarea() { if(boo) { double area; double p=(sidea+sideb+sidec)/2.0; area=Math.sqrt(p*(p-sidea)*(p-sideb)*(p-sidec)); return area; } else { System.out.println("不是一个三角形,不能计算面积"); return 0; } } } //梯形类 class Lader

JAVA实验五

实验名称:实验5:Java 中的接口、匿名类和异常 班级:姓名:学号: 一、实验目的 熟悉Java 中的接口、匿名类和异常。 二、实验内容与结果 (说明:按实验任务分别填写任务描述、处理思路及关键技术说明、程序源码和运行结果截图,不要心得与体会。) 任务1:编写应用程序,从命令行输入两个小数参数,求它们的商。要求程序中捕获NumberformatException异常和ArithmeticException异常。 package test; import java.util.*; public class test1 { public static void main(String args[]){ try{ System.out.println(shang()); } catch(NumberFormatException e){ System.out.println(e.getMessage( )); } catch(ArithmeticException e){ System.out.println(e.getMessage( )); } } static double shang(){ Scanner reader = new Scanner(System.in); String a,b; a = reader.next(); b = reader.next(); return Double.parseDouble(a)/Double.parseD ouble(b); } } 任务2:设计一个训练场,这个训练场专门训练海豚,使它们能够跳舞dance ()和发出“呼呼”的声音cry(),要求用内部类实现。 package test; import java.util.*; public class test1 { public static void main(String args[]){ training p = new training(); System.out.println(p.p.dance()); System.out.println(p.p.cry()); } } class training{ dolphin p; training(){ p = new dolphin(); } class dolphin{ String dance(){ return"dance"; } String cry(){

C++语言程序设计实验答案_类与对象

实验04 类与对象(6学时) (第4章类与对象) 一、实验目的 二、实验任务 4_1 声明一个CPU类。 包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU_Rank,声明为enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 }; frequency为单位是MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。 4_2 声明一个简单的Computer类。 有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run和stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。 4_3 声明一个表示时间的结构体。 可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。

4_4(习题4-10)设计一个用于人事管理的People(人员)类。 考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号),sex(性别)、birthday(出生日期)、id(身份证号)等。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现人员信息的录入和显示。要求包括:构造函数和析构函数、内联成员函数、组合。 三、实验步骤 1.(验证)声明一个CPU类,观察构造函数和析构函数的调用顺序。 首先声明枚举类型CPU_Rank,例如enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 },再声明CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,声明成员函数run和stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示顺序。在主程序中声明一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。程序名:。(程序见步骤2) ★程序的运行结果: 2.(示例)调试程序文件。 使用调试功能观察程序的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。参考程序如下: 操作)调试操作步骤如下: (1)单击“调试 | 逐语句”命令,系统进行单步执行状态,程序开始运行,一个DOS 窗口出现,此时Visual Studio中光标停在main()函数的入口处。

实验四Java语言解决算法问题

实验四Java语言解决算法问题(4学时) 一、实验目的 (1)熟悉Java图形用户界面GUI类; (2)学习处理ActionEvent事件; (3)掌握事件源、监视器、处理事件的接口这三个概念; (4)使用Java语言解决算法问题。 二、实验学时:2学时 三、实验要求 (1)编写一个训练算术能力的测试软件; (2)Teacher类对象给出题目,判断答案是否正确;ComputerFrame类对象提供题目GUI 视图;MainClass作为主类。 四、实验原理 (1)事件源指的是能够产生事件的对象,如文本框、按钮等; (2)监视器指的是对事件源进行监视的对象,以便对发生的事件进行处理; (3)Java语言使用接口回调技术设计了它的处理事件模式。事件源增加监视的方法addXXXListener(XXXListener listener)中的参数是一个接口,listener可以引 用任何实现了该接口的类所创建的对象,当事件源发生事件时,接口listener立 刻回调被类实现的接口中的某个方法。 五、实验内容 课堂实验任务:请按模板要求,将【代码】替换为Java程序代码。 1.题目一算术测试 模板代码:Teacher.java public 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="+"; else operator="-"; return operator; } public boolean getRight(int answer) { if(operator.equals("+")) { if(answer==numberOne+numberTwo) right=true; else right=false; } else if(operator.equals("-"))

java程序设计-试验2(学生版)()

华北电力大学 实验报告实验名称Java程序面向对象设计(一)课程名称Java程序设计 专业班级:学生姓名: 学号:成绩: 指导教师:张学斌实验日期:

一、实验目的及要求 1.掌握类的定义。 2.掌握成员变量和成员方法的定义。 3.掌握构造方法的定义和使用。 4.掌握类的多态性 二、实验环境 Windows2000/Windows XP,JDK 1.2~1.6 三、试验内容和步骤 要求按照实验内容,写出详细实验过程和步骤,必要时截图。 实验1 机动车 1.1实验要求 编写一个Java应用程序,该程序有两个类:Vehicle(用于刻画机动车)和User(主类)。具体要求如下: Vehicle类有一个double类型的变量speed,用于刻画机动车的速度,一个int型变量power,用于刻画机动车的功率。定义了speedUp(int s)方法,体现机动车有加速功能。定义了speedDown()方法,体现机动车有减速功能。定义了setPower(int s),用于设置机动车的功率。定义了getPower()方法,用于获取机动车的功率。 在主类User的mian()方法中用Vehicle类创建对象,并让该对象调用方法设置功率,演示加速和减速功能。 1.2程序模板 Vehicle.java

【代码1】//声明double型变量speed,刻画速度 【代码2】//声明int型变量power,刻画功率 void speedUp(int s) { 【代码3】 //将参数s的值与成员变量speed的和赋值给成员变量speed } void speedDown(int d) { 【代码4】//将成员变量speed与参数d的差赋值给成员变量speed } void setPower(int p) { 【代码5】 //将参数p的值赋值给成员变量power } int getPower() { 【代码6】 //返回成员变量power的值 } double getSpeed() { return speed; } } ---------------------------------------------------------------------------------------------- User.java

相关文档
最新文档